#!/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 # 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}"