131 lines
3.7 KiB
Bash
Executable File
131 lines
3.7 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
. /sbin/sabayondevkit-functions.sh
|
|
|
|
SAB_WORKSPACE="${SAB_WORKSPACE:-$PWD}"
|
|
entropysrv=$(mktemp)
|
|
createrepo=$(mktemp)
|
|
REPOSITORY_NAME="${REPOSITORY_NAME:-default}"
|
|
REPOSITORY_DESCRIPTION="${REPOSITORY_DESCRIPTION:-My Sabayon repository}"
|
|
DOCKER_IMAGE="${DOCKER_IMAGE:-sabayon/eit-amd64}"
|
|
PORTAGE_ARTIFACTS="${PORTAGE_ARTIFACTS:-$SAB_WORKSPACE/portage_artifacts}"
|
|
OUTPUT_DIR="${OUTPUT_DIR:-$SAB_WORKSPACE/entropy_artifacts}"
|
|
DOCKER_OPTS="${DOCKER_OPTS:--ti --rm}"
|
|
|
|
args=("$@")
|
|
EDITOR=cat
|
|
|
|
docker_env=(-e "EDITOR=$EDITOR"
|
|
-e "REPOSITORY=$REPOSITORY_NAME"
|
|
-e "LC_ALL=en_US.UTF-8")
|
|
|
|
docker_volumes=(
|
|
-v "$OUTPUT_DIR:/sabayon/artifacts"
|
|
-v "$createrepo:/sabayon/bin/create_repo.sh"
|
|
-v "$entropysrv:/etc/entropy/server.conf"
|
|
)
|
|
|
|
[ -z "$PUBKEY" ] || docker_volumes+=(-v "$PUBKEY:/etc/entropy/mykeys/key.pub")
|
|
[ -z "$PRIVATEKEY" ] || docker_volumes+=(-v "$PRIVATEKEY:/etc/entropy/mykeys/private.key")
|
|
|
|
|
|
if [ $# -eq 0 ]
|
|
then
|
|
docker_volumes+=(-v "$PORTAGE_ARTIFACTS:/usr/portage/packages" )
|
|
else
|
|
echo "Packages directory: ${args[0]}"
|
|
docker_volumes+=(-v "${args[0]}:/usr/portage/packages" )
|
|
fi
|
|
|
|
check_docker_requirements
|
|
|
|
echo "Repository: $REPOSITORY_NAME"
|
|
echo "Repository Description: $REPOSITORY_DESCRIPTION"
|
|
|
|
|
|
# Creating the building script on-the-fly
|
|
cat >$createrepo <<EOF
|
|
#!/bin/bash
|
|
set -e
|
|
built_pkgs=\$(find /usr/portage/packages -name "*.tbz2" | xargs)
|
|
repo="\${REPOSITORY:-default}"
|
|
mkdir -p /sabayon/artifacts
|
|
|
|
[[ -z "\${built_pkgs}" ]] && echo "ERROR: no tbz2s found" && exit 2
|
|
|
|
if [ -d "/sabayon/artifacts/standard" ]; then
|
|
eit unlock \$repo || true
|
|
eit pull --quick \$repo || true
|
|
#eit sync \$repo
|
|
else
|
|
echo "Yes" | eit init --quick \$repo
|
|
fi
|
|
|
|
[ -f "/etc/entropy/mykeys/key.pub" ] && [ -f "/etc/entropy/mykeys/private.key" ] &&\
|
|
eit key import \$repo /etc/entropy/mykeys/private.key /etc/entropy/mykeys/key.pub && { eit key sign \$repo || true; }
|
|
|
|
echo "Yes" | eit inject \${built_pkgs} || { echo "ouch unable to inject" && exit 3; }
|
|
echo "Yes Yes Yes" | eit commit --quick
|
|
|
|
eit push --quick --force
|
|
|
|
EOF
|
|
chmod +x $createrepo
|
|
|
|
# Creating the entropy repository configuration on-the-fly
|
|
cat >$entropysrv <<EOF
|
|
# expiration-days = <internal value>
|
|
community-mode = enable
|
|
weak-package-files = disable
|
|
database-format = bz2
|
|
# sync-speed-limit =
|
|
# server-basic-languages = en_US C
|
|
# disabled-eapis = 1,2
|
|
# expiration-based-scope = disable
|
|
# nonfree-packages-directory-support = disable
|
|
rss-feed = disable
|
|
changelog = disable
|
|
rss-name = packages.rss
|
|
rss-base-url = http://packages.sabayon.org/?quicksearch=
|
|
rss-website-url = http://www.sabayon.org/
|
|
max-rss-entries = 10000
|
|
# max-rss-light-entries = 100
|
|
rss-light-name = updates.rss
|
|
managing-editor =
|
|
broken-reverse-deps = disable
|
|
default-repository = $REPOSITORY_NAME
|
|
repository=$REPOSITORY_NAME|$REPOSITORY_DESCRIPTION|file:///sabayon/artifacts
|
|
EOF
|
|
|
|
function cleanup {
|
|
rm -rf $createrepo
|
|
rm -rf $entropysrv
|
|
}
|
|
|
|
trap cleanup EXIT
|
|
|
|
echo "docker $DOCKER_OPTS ${docker_env[@]} ${docker_volumes[@]} $DOCKER_IMAGE /sabayon/bin/create_repo.sh"
|
|
|
|
docker run $DOCKER_OPTS --entrypoint /bin/bash "${docker_env[@]}" "${docker_volumes[@]}" $DOCKER_IMAGE /sabayon/bin/create_repo.sh || true
|
|
|
|
if [ -d "$OUTPUT_DIR/standard" ]; then
|
|
echo "The Sabayon repository files are in $OUTPUT_DIR"
|
|
echo "Now you can upload its content where you want"
|
|
|
|
echo ""
|
|
echo "Here it is the repository file how will look like "
|
|
echo "(if you plan to upload it to a webserver, modify the URI accordingly)"
|
|
echo "
|
|
[$REPOSITORY_NAME]
|
|
desc = $REPOSITORY_DESCRIPTION
|
|
repo=file://$OUTPUT_DIR#bz2
|
|
enabled = true
|
|
pkg = file://$OUTPUT_DIR
|
|
"
|
|
else
|
|
echo "Something failed :("
|
|
fi
|
|
|
|
rm -rf $createrepo
|
|
rm -rf $entropysrv
|