summaryrefslogtreecommitdiff
path: root/python-peru.spec
diff options
context:
space:
mode:
Diffstat (limited to 'python-peru.spec')
-rw-r--r--python-peru.spec549
1 files changed, 549 insertions, 0 deletions
diff --git a/python-peru.spec b/python-peru.spec
new file mode 100644
index 0000000..a5e3f70
--- /dev/null
+++ b/python-peru.spec
@@ -0,0 +1,549 @@
+%global _empty_manifest_terminate_build 0
+Name: python-peru
+Version: 1.3.1
+Release: 1
+Summary: A tool for fetching code
+License: MIT
+URL: https://github.com/buildinspace/peru
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/8e/c7/c451e70443c0b82440384d51f4b9517b921d4fe44172d63dc10a09da114f/peru-1.3.1.tar.gz
+BuildArch: noarch
+
+
+%description
++++ b/peru.yaml
+@@ -6,12 +6,14 @@ imports:
+ git module dircolors:
+ url: https://github.com/seebi/dircolors-solarized
+ pick: dircolors.ansi-dark
++ rev: a5e130c642e45323a22226f331cb60fd37ce564f
+ curl module pathogen:
+ url: https://codeload.github.com/tpope/vim-pathogen/tar.gz/v2.3
+ unpack: tar
+ export: vim-pathogen-2.3/autoload/
++ sha1: 9c3fd6d9891bfe2cd3ed3ddc9ffe5f3fccb72b6a
+ git module vim-solarized:
+ url: https://github.com/altercation/vim-colors-solarized
+- rev: 7a7e5c8818d717084730133ed6b84a3ffc9d0447
++ rev: 528a59f26d12278698bb946f8fb82a63711eec21
+```
+Peru made three changes:
+- The `dircolors` module, which didn't have a `rev` before, just got one. By
+ default for `git`, this is the current `master` or `main`. To change that,
+ you can set the `reup` field to the name of a different branch.
+- The `pathogen` module got a `sha1` field. Unlike `git`, a `curl` module is
+ plain old HTTP, so it's stuck downloading whatever file is at the `url`. But
+ it will check this hash after the download is finished, and it will raise an
+ error if there's a mismatch.
+- The `vim-solarized` module had a hash before, but it's been updated. Again,
+ the new value comes from `master` or `main` by default.
+At this point, you'll probably want to make a new commit of `peru.yaml` to
+record the version bumps. You can do this every so often to keep your plugins
+up to date, and you'll always be able to reach old versions in your history.
+## Commands
+- `sync`
+ - Pull in your imports. `sync` yells at you instead of overwriting existing
+ or modified files. Use `--force`/`-f` to tell it you're serious.
+- `clean`
+ - Remove imported files. Same `--force`/`-f` flag as `sync`.
+- `reup`
+ - Update module fields with new revision information. For `git`, `hg`, and
+ `svn`, this updates the `rev` field. For `curl`, this sets the `sha1`
+ field. You can optionally give specific module names as arguments.
+- `copy`
+ - Make a copy of all the files in a module. Either specify a directory to put
+ them in, or peru will create a temp dir for you. You can use this to see
+ modules you don't normally import, or to play with different module/rule
+ combinations (see "Rules" below).
+- `override`
+ - Replace the contents of a module with a local directory path, usually a
+ clone you've made of the same repo. This lets you test changes to imported
+ modules without needing to push your changes upstream or edit `peru.yaml`.
+## Module Types
+##### git, hg, svn
+For cloning repos. These types all provide the same fields:
+- `url`: required, any protocol supported by the underlying VCS
+- `rev`: optional, the specific revision/branch/tag to fetch
+- `reup`: optional, the branch/tag to get the latest rev from when running
+ `peru reup`
+The `git` type also supports setting `submodules: false` to skip
+fetching git submodules. Otherwise they're included by default.
+##### curl
+For downloading a file from a URL. This type is powered by Pythons's standard
+library, rather than an external program.
+- `url`: required, any kind supported by `urllib` (HTTP, FTP, `file://`)
+- `filename`: optional, overrides the default filename
+- `sha1`: optional, checks that the downloaded file matches the checksum
+- `unpack`: optional, `tar` or `zip`
+Peru includes a few other types mostly for testing purposes. See `rsync` for an
+example implemented in Bash.
+## Creating New Module Types
+Module type plugins are as-dumb-as-possible scripts that only know how to
+sync, and optionally reup. Peru shells out to them and then handles most of
+the caching magic itself, though plugins can also do their own caching as
+appropriate. For example, the git and hg plugins keep track of repos they
+clone. Peru itself doesn't need to know how to do that. For all the details,
+see [Architecture: Plugins](docs/architecture.md#plugins).
+## Rules
+Some fields (like `rev` and `unpack`) are specific to certain module
+types. There are also fields you can use in any module, which modify the
+tree of files after it's fetched. Some of these made an appearance in
+the fancy example above:
+- `copy`: A map or multimap of source and destination paths to copy.
+ Works like `cp` on the command line, so if the destination is a
+ directory, it'll preserve the source filename and copy into the
+ destination directory.
+- `move`: A map or multimap of source and destination paths to move.
+ Similar to `copy` above, but removes the source.
+- `drop`: A file or directory, or a list of files and directories, to
+ remove from the module. Paths can contain `*` or `**` globs.
+- `pick`: A file or directory, or a list of files and directories, to
+ include in the module. Everything else is dropped. Paths can contain
+ `*` or `**` globs.
+- `executable`: A file or list of files to make executable, as if
+ calling `chmod +x`. Also accepts globs.
+- `export`: A subdirectory that peru should treat as the root of the
+ module tree. Everything else is dropped, including parent directories.
+Note that these fields always take effect in the order listed above, regardless
+of the order they're given in `peru.yaml`. For example, a `move` is always
+performed before a `pick`. Also note that these fields can't be given twice.
+For example, instead of using two separate `move` fields (one of which would be
+ignored), use a single `move` field containing multiple moves. In practice,
+things work this way because these fields are parsed as keys in a dictionary,
+which don't preserve ordering and can't repeat.
+Besides using those fields in your modules, you can also use them in "named
+rules", which let you transform one module in multiple ways. For example, say
+you want the `asyncio` subdir from the Tulip project, but you also want the
+license file somewhere else. Rather than defining the same module twice, you
+can use one module and two named rules, like this:
+```yaml
+imports:
+ tulip|asyncio: python/asyncio/
+ tulip|license: licenses/
+git module tulip:
+ url: https://github.com/python/asyncio
+rule asyncio:
+ export: asyncio/
+rule license:
+ pick: COPYING
+```
+As in this example, named rules are declared a lot like modules and then
+used in the `imports` list, with the syntax `module|rule`. The `|`
+operator there works kind of like a shell pipeline, so you can even do
+twisted things like `module|rule1|rule2`, with each rule applying to the
+output tree of the previous.
+## Recursion
+If you import a module that has a peru file of its own, peru can include
+that module's imports along with it, similar to how git submodules
+behave with `git clone --recursive`. To enable this, add `recursive:
+true` in a module's definition.
+It's also possible to directly import modules that are defined in the
+`peru.yaml` file of another module. If your project defines a module
+`foo`, and `foo` has a peru file in it that defines a module `bar`, you
+can use `foo.bar` in your own imports. This works even if you never
+actually import `foo`, and it does not require setting `recursive:
+true`.
+## Configuration
+There are several flags and environment variables you can set, to
+control where peru puts things. Flags always take precedence.
+- `--file=<file>`: The path to your peru YAML file. By default peru
+ looks for `peru.yaml` in the current directory or one of its parents.
+ This setting tells peru to use a specific file. If set, `--sync-dir`
+ must also be set.
+- `--sync-dir=<dir>`: The path that all `imports` are interpreted
+ relative to. That is, if you import a module to `./`, the contents of
+ that module go directly in the sync dir. By default this is the
+ directory containing your `peru.yaml` file. If set, `--file` must also
+ be set.
+- `--state-dir=<dir>`: The directory where peru stashes all of its state
+ metadata, and also the parent of the cache dir. By default this is
+ `.peru` inside the sync dir. You should not share this directory
+ between two projects, or `peru sync` will get confused.
+- `--cache-dir=<dir>` or `PERU_CACHE_DIR`: The directory where peru
+ keeps everything it's fetched. If you have many projects fetching the
+ same dependencies, you can use a shared cache dir to speed things up.
+- `--file-basename=<name>`: Change the default peru file name (normally
+ `peru.yaml`). As usual, peru will search the current directory and its
+ parents for a file of that name, and it will use that file's parent
+ dir as the sync dir. Incompatible with `--file`.
+## Links
+- [Discussion and announcements (Google
+ Group)](https://groups.google.com/forum/#!forum/peru-tool)
+- [Architecture doc](docs/architecture.md)
+- [Using peru with make](docs/make_examples)
+
+%package -n python3-peru
+Summary: A tool for fetching code
+Provides: python-peru
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-peru
++++ b/peru.yaml
+@@ -6,12 +6,14 @@ imports:
+ git module dircolors:
+ url: https://github.com/seebi/dircolors-solarized
+ pick: dircolors.ansi-dark
++ rev: a5e130c642e45323a22226f331cb60fd37ce564f
+ curl module pathogen:
+ url: https://codeload.github.com/tpope/vim-pathogen/tar.gz/v2.3
+ unpack: tar
+ export: vim-pathogen-2.3/autoload/
++ sha1: 9c3fd6d9891bfe2cd3ed3ddc9ffe5f3fccb72b6a
+ git module vim-solarized:
+ url: https://github.com/altercation/vim-colors-solarized
+- rev: 7a7e5c8818d717084730133ed6b84a3ffc9d0447
++ rev: 528a59f26d12278698bb946f8fb82a63711eec21
+```
+Peru made three changes:
+- The `dircolors` module, which didn't have a `rev` before, just got one. By
+ default for `git`, this is the current `master` or `main`. To change that,
+ you can set the `reup` field to the name of a different branch.
+- The `pathogen` module got a `sha1` field. Unlike `git`, a `curl` module is
+ plain old HTTP, so it's stuck downloading whatever file is at the `url`. But
+ it will check this hash after the download is finished, and it will raise an
+ error if there's a mismatch.
+- The `vim-solarized` module had a hash before, but it's been updated. Again,
+ the new value comes from `master` or `main` by default.
+At this point, you'll probably want to make a new commit of `peru.yaml` to
+record the version bumps. You can do this every so often to keep your plugins
+up to date, and you'll always be able to reach old versions in your history.
+## Commands
+- `sync`
+ - Pull in your imports. `sync` yells at you instead of overwriting existing
+ or modified files. Use `--force`/`-f` to tell it you're serious.
+- `clean`
+ - Remove imported files. Same `--force`/`-f` flag as `sync`.
+- `reup`
+ - Update module fields with new revision information. For `git`, `hg`, and
+ `svn`, this updates the `rev` field. For `curl`, this sets the `sha1`
+ field. You can optionally give specific module names as arguments.
+- `copy`
+ - Make a copy of all the files in a module. Either specify a directory to put
+ them in, or peru will create a temp dir for you. You can use this to see
+ modules you don't normally import, or to play with different module/rule
+ combinations (see "Rules" below).
+- `override`
+ - Replace the contents of a module with a local directory path, usually a
+ clone you've made of the same repo. This lets you test changes to imported
+ modules without needing to push your changes upstream or edit `peru.yaml`.
+## Module Types
+##### git, hg, svn
+For cloning repos. These types all provide the same fields:
+- `url`: required, any protocol supported by the underlying VCS
+- `rev`: optional, the specific revision/branch/tag to fetch
+- `reup`: optional, the branch/tag to get the latest rev from when running
+ `peru reup`
+The `git` type also supports setting `submodules: false` to skip
+fetching git submodules. Otherwise they're included by default.
+##### curl
+For downloading a file from a URL. This type is powered by Pythons's standard
+library, rather than an external program.
+- `url`: required, any kind supported by `urllib` (HTTP, FTP, `file://`)
+- `filename`: optional, overrides the default filename
+- `sha1`: optional, checks that the downloaded file matches the checksum
+- `unpack`: optional, `tar` or `zip`
+Peru includes a few other types mostly for testing purposes. See `rsync` for an
+example implemented in Bash.
+## Creating New Module Types
+Module type plugins are as-dumb-as-possible scripts that only know how to
+sync, and optionally reup. Peru shells out to them and then handles most of
+the caching magic itself, though plugins can also do their own caching as
+appropriate. For example, the git and hg plugins keep track of repos they
+clone. Peru itself doesn't need to know how to do that. For all the details,
+see [Architecture: Plugins](docs/architecture.md#plugins).
+## Rules
+Some fields (like `rev` and `unpack`) are specific to certain module
+types. There are also fields you can use in any module, which modify the
+tree of files after it's fetched. Some of these made an appearance in
+the fancy example above:
+- `copy`: A map or multimap of source and destination paths to copy.
+ Works like `cp` on the command line, so if the destination is a
+ directory, it'll preserve the source filename and copy into the
+ destination directory.
+- `move`: A map or multimap of source and destination paths to move.
+ Similar to `copy` above, but removes the source.
+- `drop`: A file or directory, or a list of files and directories, to
+ remove from the module. Paths can contain `*` or `**` globs.
+- `pick`: A file or directory, or a list of files and directories, to
+ include in the module. Everything else is dropped. Paths can contain
+ `*` or `**` globs.
+- `executable`: A file or list of files to make executable, as if
+ calling `chmod +x`. Also accepts globs.
+- `export`: A subdirectory that peru should treat as the root of the
+ module tree. Everything else is dropped, including parent directories.
+Note that these fields always take effect in the order listed above, regardless
+of the order they're given in `peru.yaml`. For example, a `move` is always
+performed before a `pick`. Also note that these fields can't be given twice.
+For example, instead of using two separate `move` fields (one of which would be
+ignored), use a single `move` field containing multiple moves. In practice,
+things work this way because these fields are parsed as keys in a dictionary,
+which don't preserve ordering and can't repeat.
+Besides using those fields in your modules, you can also use them in "named
+rules", which let you transform one module in multiple ways. For example, say
+you want the `asyncio` subdir from the Tulip project, but you also want the
+license file somewhere else. Rather than defining the same module twice, you
+can use one module and two named rules, like this:
+```yaml
+imports:
+ tulip|asyncio: python/asyncio/
+ tulip|license: licenses/
+git module tulip:
+ url: https://github.com/python/asyncio
+rule asyncio:
+ export: asyncio/
+rule license:
+ pick: COPYING
+```
+As in this example, named rules are declared a lot like modules and then
+used in the `imports` list, with the syntax `module|rule`. The `|`
+operator there works kind of like a shell pipeline, so you can even do
+twisted things like `module|rule1|rule2`, with each rule applying to the
+output tree of the previous.
+## Recursion
+If you import a module that has a peru file of its own, peru can include
+that module's imports along with it, similar to how git submodules
+behave with `git clone --recursive`. To enable this, add `recursive:
+true` in a module's definition.
+It's also possible to directly import modules that are defined in the
+`peru.yaml` file of another module. If your project defines a module
+`foo`, and `foo` has a peru file in it that defines a module `bar`, you
+can use `foo.bar` in your own imports. This works even if you never
+actually import `foo`, and it does not require setting `recursive:
+true`.
+## Configuration
+There are several flags and environment variables you can set, to
+control where peru puts things. Flags always take precedence.
+- `--file=<file>`: The path to your peru YAML file. By default peru
+ looks for `peru.yaml` in the current directory or one of its parents.
+ This setting tells peru to use a specific file. If set, `--sync-dir`
+ must also be set.
+- `--sync-dir=<dir>`: The path that all `imports` are interpreted
+ relative to. That is, if you import a module to `./`, the contents of
+ that module go directly in the sync dir. By default this is the
+ directory containing your `peru.yaml` file. If set, `--file` must also
+ be set.
+- `--state-dir=<dir>`: The directory where peru stashes all of its state
+ metadata, and also the parent of the cache dir. By default this is
+ `.peru` inside the sync dir. You should not share this directory
+ between two projects, or `peru sync` will get confused.
+- `--cache-dir=<dir>` or `PERU_CACHE_DIR`: The directory where peru
+ keeps everything it's fetched. If you have many projects fetching the
+ same dependencies, you can use a shared cache dir to speed things up.
+- `--file-basename=<name>`: Change the default peru file name (normally
+ `peru.yaml`). As usual, peru will search the current directory and its
+ parents for a file of that name, and it will use that file's parent
+ dir as the sync dir. Incompatible with `--file`.
+## Links
+- [Discussion and announcements (Google
+ Group)](https://groups.google.com/forum/#!forum/peru-tool)
+- [Architecture doc](docs/architecture.md)
+- [Using peru with make](docs/make_examples)
+
+%package help
+Summary: Development documents and examples for peru
+Provides: python3-peru-doc
+%description help
++++ b/peru.yaml
+@@ -6,12 +6,14 @@ imports:
+ git module dircolors:
+ url: https://github.com/seebi/dircolors-solarized
+ pick: dircolors.ansi-dark
++ rev: a5e130c642e45323a22226f331cb60fd37ce564f
+ curl module pathogen:
+ url: https://codeload.github.com/tpope/vim-pathogen/tar.gz/v2.3
+ unpack: tar
+ export: vim-pathogen-2.3/autoload/
++ sha1: 9c3fd6d9891bfe2cd3ed3ddc9ffe5f3fccb72b6a
+ git module vim-solarized:
+ url: https://github.com/altercation/vim-colors-solarized
+- rev: 7a7e5c8818d717084730133ed6b84a3ffc9d0447
++ rev: 528a59f26d12278698bb946f8fb82a63711eec21
+```
+Peru made three changes:
+- The `dircolors` module, which didn't have a `rev` before, just got one. By
+ default for `git`, this is the current `master` or `main`. To change that,
+ you can set the `reup` field to the name of a different branch.
+- The `pathogen` module got a `sha1` field. Unlike `git`, a `curl` module is
+ plain old HTTP, so it's stuck downloading whatever file is at the `url`. But
+ it will check this hash after the download is finished, and it will raise an
+ error if there's a mismatch.
+- The `vim-solarized` module had a hash before, but it's been updated. Again,
+ the new value comes from `master` or `main` by default.
+At this point, you'll probably want to make a new commit of `peru.yaml` to
+record the version bumps. You can do this every so often to keep your plugins
+up to date, and you'll always be able to reach old versions in your history.
+## Commands
+- `sync`
+ - Pull in your imports. `sync` yells at you instead of overwriting existing
+ or modified files. Use `--force`/`-f` to tell it you're serious.
+- `clean`
+ - Remove imported files. Same `--force`/`-f` flag as `sync`.
+- `reup`
+ - Update module fields with new revision information. For `git`, `hg`, and
+ `svn`, this updates the `rev` field. For `curl`, this sets the `sha1`
+ field. You can optionally give specific module names as arguments.
+- `copy`
+ - Make a copy of all the files in a module. Either specify a directory to put
+ them in, or peru will create a temp dir for you. You can use this to see
+ modules you don't normally import, or to play with different module/rule
+ combinations (see "Rules" below).
+- `override`
+ - Replace the contents of a module with a local directory path, usually a
+ clone you've made of the same repo. This lets you test changes to imported
+ modules without needing to push your changes upstream or edit `peru.yaml`.
+## Module Types
+##### git, hg, svn
+For cloning repos. These types all provide the same fields:
+- `url`: required, any protocol supported by the underlying VCS
+- `rev`: optional, the specific revision/branch/tag to fetch
+- `reup`: optional, the branch/tag to get the latest rev from when running
+ `peru reup`
+The `git` type also supports setting `submodules: false` to skip
+fetching git submodules. Otherwise they're included by default.
+##### curl
+For downloading a file from a URL. This type is powered by Pythons's standard
+library, rather than an external program.
+- `url`: required, any kind supported by `urllib` (HTTP, FTP, `file://`)
+- `filename`: optional, overrides the default filename
+- `sha1`: optional, checks that the downloaded file matches the checksum
+- `unpack`: optional, `tar` or `zip`
+Peru includes a few other types mostly for testing purposes. See `rsync` for an
+example implemented in Bash.
+## Creating New Module Types
+Module type plugins are as-dumb-as-possible scripts that only know how to
+sync, and optionally reup. Peru shells out to them and then handles most of
+the caching magic itself, though plugins can also do their own caching as
+appropriate. For example, the git and hg plugins keep track of repos they
+clone. Peru itself doesn't need to know how to do that. For all the details,
+see [Architecture: Plugins](docs/architecture.md#plugins).
+## Rules
+Some fields (like `rev` and `unpack`) are specific to certain module
+types. There are also fields you can use in any module, which modify the
+tree of files after it's fetched. Some of these made an appearance in
+the fancy example above:
+- `copy`: A map or multimap of source and destination paths to copy.
+ Works like `cp` on the command line, so if the destination is a
+ directory, it'll preserve the source filename and copy into the
+ destination directory.
+- `move`: A map or multimap of source and destination paths to move.
+ Similar to `copy` above, but removes the source.
+- `drop`: A file or directory, or a list of files and directories, to
+ remove from the module. Paths can contain `*` or `**` globs.
+- `pick`: A file or directory, or a list of files and directories, to
+ include in the module. Everything else is dropped. Paths can contain
+ `*` or `**` globs.
+- `executable`: A file or list of files to make executable, as if
+ calling `chmod +x`. Also accepts globs.
+- `export`: A subdirectory that peru should treat as the root of the
+ module tree. Everything else is dropped, including parent directories.
+Note that these fields always take effect in the order listed above, regardless
+of the order they're given in `peru.yaml`. For example, a `move` is always
+performed before a `pick`. Also note that these fields can't be given twice.
+For example, instead of using two separate `move` fields (one of which would be
+ignored), use a single `move` field containing multiple moves. In practice,
+things work this way because these fields are parsed as keys in a dictionary,
+which don't preserve ordering and can't repeat.
+Besides using those fields in your modules, you can also use them in "named
+rules", which let you transform one module in multiple ways. For example, say
+you want the `asyncio` subdir from the Tulip project, but you also want the
+license file somewhere else. Rather than defining the same module twice, you
+can use one module and two named rules, like this:
+```yaml
+imports:
+ tulip|asyncio: python/asyncio/
+ tulip|license: licenses/
+git module tulip:
+ url: https://github.com/python/asyncio
+rule asyncio:
+ export: asyncio/
+rule license:
+ pick: COPYING
+```
+As in this example, named rules are declared a lot like modules and then
+used in the `imports` list, with the syntax `module|rule`. The `|`
+operator there works kind of like a shell pipeline, so you can even do
+twisted things like `module|rule1|rule2`, with each rule applying to the
+output tree of the previous.
+## Recursion
+If you import a module that has a peru file of its own, peru can include
+that module's imports along with it, similar to how git submodules
+behave with `git clone --recursive`. To enable this, add `recursive:
+true` in a module's definition.
+It's also possible to directly import modules that are defined in the
+`peru.yaml` file of another module. If your project defines a module
+`foo`, and `foo` has a peru file in it that defines a module `bar`, you
+can use `foo.bar` in your own imports. This works even if you never
+actually import `foo`, and it does not require setting `recursive:
+true`.
+## Configuration
+There are several flags and environment variables you can set, to
+control where peru puts things. Flags always take precedence.
+- `--file=<file>`: The path to your peru YAML file. By default peru
+ looks for `peru.yaml` in the current directory or one of its parents.
+ This setting tells peru to use a specific file. If set, `--sync-dir`
+ must also be set.
+- `--sync-dir=<dir>`: The path that all `imports` are interpreted
+ relative to. That is, if you import a module to `./`, the contents of
+ that module go directly in the sync dir. By default this is the
+ directory containing your `peru.yaml` file. If set, `--file` must also
+ be set.
+- `--state-dir=<dir>`: The directory where peru stashes all of its state
+ metadata, and also the parent of the cache dir. By default this is
+ `.peru` inside the sync dir. You should not share this directory
+ between two projects, or `peru sync` will get confused.
+- `--cache-dir=<dir>` or `PERU_CACHE_DIR`: The directory where peru
+ keeps everything it's fetched. If you have many projects fetching the
+ same dependencies, you can use a shared cache dir to speed things up.
+- `--file-basename=<name>`: Change the default peru file name (normally
+ `peru.yaml`). As usual, peru will search the current directory and its
+ parents for a file of that name, and it will use that file's parent
+ dir as the sync dir. Incompatible with `--file`.
+## Links
+- [Discussion and announcements (Google
+ Group)](https://groups.google.com/forum/#!forum/peru-tool)
+- [Architecture doc](docs/architecture.md)
+- [Using peru with make](docs/make_examples)
+
+%prep
+%autosetup -n peru-1.3.1
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-peru -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Mon May 15 2023 Python_Bot <Python_Bot@openeuler.org> - 1.3.1-1
+- Package Spec generated