| #!/bin/sh |
| # 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 |
| |
| # Return explicit status. |
| exit "${ret}" |