2020-09-14 10:09:01 +02:00
|
|
|
#!/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
|
|
|
|
|
2020-10-08 14:39:23 +02:00
|
|
|
# Regenerate the metadata/pkg_desc_index file. This is not
|
2020-09-14 10:09:01 +02:00
|
|
|
# needed for https://gitweb.gentoo.org/repo/sync/gentoo.git which
|
2020-10-08 14:39:23 +02:00
|
|
|
# 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
|
2020-09-14 10:09:01 +02:00
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Return explicit status.
|
|
|
|
exit "${ret}"
|