example (2303B)
- #!/bin/bash
- # Example /etc/portage/repo.postsync.d script. Make it executable (chmod +x) for
- # Portage to process it.
- #
- # With portage-2.2.16 and newer, all repo.postsync.d hooks will be called multiple
- # times after syncing each repository.
- #
- # Older versions of Portage support syncing only one repository.
- # In those versions, the postsync.d hooks will be called only once,
- # and they will not be passed any parameters.
- # On a repo.postsync.d hook call, positional parameters contain
- # information about the just-synced repository.
- # Your hook can control it's actions depending on any of the three
- # parameters passed in to it.
- #
- # They are as follows:
- #
- # The repository name.
- repository_name=${1}
- # The URI to which the repository was synced.
- sync_uri=${2}
- # The path to the repository.
- repository_path=${3}
- # Portage assumes that a hook succeeded if it exits with 0 code. If no
- # explicit exit is done, the exit code is the exit code of last spawned
- # command. Since our script is a bit more complex, we want to control
- # the exit code explicitly.
- ret=0
- if [ -n "${repository_name}" ]; then
- # Repository name was provided, so we're in a post-repository hook.
- echo "* In post-repository hook for ${repository_name}"
- echo "** synced from remote repository ${sync_uri}"
- echo "** synced into ${repository_path}"
- # Gentoo comes with pregenerated cache but the other repositories
- # usually don't. Generate them to improve performance.
- if [ "${repository_name}" != "gentoo" ]; then
- if ! egencache --update --repo="${repository_name}" --jobs=4
- then
- echo "!!! egencache failed!"
- ret=1
- fi
- fi
- fi
- if [ -n "${repository_name}" ] && ! [ -e "${repository_path}/metadata/pkg_desc_index" ]; then
- # Regenerate the metadata/pkg_desc_index file. This is not
- # needed for https://gitweb.gentoo.org/repo/sync/gentoo.git which
- # provides a freshly generated copy. The --external-cache-only
- # option causes the metadata/pkg_desc_index file to be written under
- # /var/cache/edb/dep instead of the repository itself, so that it
- # does not interfere with repository verification.
- if ! egencache --update-pkg-desc-index --external-cache-only --repo="${repository_name}" ${PORTAGE_VERBOSE+--verbose}
- then
- echo "!!! egencache failed!"
- ret=1
- fi
- fi
- # Return explicit status.
- exit "${ret}"