126 lines
4.6 KiB
Bash
Executable file
126 lines
4.6 KiB
Bash
Executable file
#!/bin/sh
|
|
# Puppet notes -- script is file
|
|
# mkdir /srv/git_seed
|
|
# cron job to invoke file daily
|
|
# Need to setup OUTPUT_DIR to be served by apache
|
|
|
|
#optional verbose (-v) flag when manually running the script
|
|
getopts "v" option;
|
|
if [ $option == "v" ]; then verbose=1; else verbose=0; fi;
|
|
|
|
# Where the git repos live. These are bare repos
|
|
ORIGIN_DIR=/srv/git/repositories/rpms
|
|
|
|
# Where we'll create the repos to tar up
|
|
WORK_DIR=/srv/git_seed
|
|
|
|
# Subdirectory makes cleanup easier
|
|
SEED_DIR=$WORK_DIR/git-checkout
|
|
|
|
# subdirectory to collect rpm speciles
|
|
SPEC_DIR=$WORK_DIR/rpm-specs
|
|
|
|
# list of branches to make extra spec tarballs for
|
|
EXTRA_BRANCHES=("epel7" "epel8" "epel9")
|
|
EXTRA_BRANCHES_PREFIX=extra-rpm-specs-
|
|
|
|
# clear extra branches specs working directories
|
|
rm -rf $WORK_DIR/$EXTRA_BRANCHES_PREFIX*
|
|
|
|
# create extra branches specs working directories
|
|
pushd $WORK_DIR &>/dev/null
|
|
mkdir -p ${EXTRA_BRANCHES[@]/#/$EXTRA_BRANCHES_PREFIX}
|
|
popd &>/dev/null
|
|
|
|
# Where to store the seed tarball for download
|
|
OUTPUT_DIR=/srv/cache/lookaside/
|
|
|
|
# Instead of starting fresh each time, we'll try to use git pull to keep things synced
|
|
#rm -rf $WORK_DIR/*
|
|
mkdir -p $SEED_DIR
|
|
mkdir -p $SPEC_DIR
|
|
|
|
# Give people an indication of when this checkout was last synced
|
|
TIMESTAMP=$(date --rfc-3339=seconds)
|
|
DATE=$(date +'%Y%m%d')
|
|
echo "$TIMESTAMP" >$SEED_DIR/TIMESTAMP
|
|
|
|
for repo in $ORIGIN_DIR/*.git; do
|
|
((verbose)) && echo processing $repo
|
|
bname=$(basename $repo .git)
|
|
working_tree=$SEED_DIR/$bname
|
|
# uncomment to skip processing dead.package repos
|
|
# if [ -e $working_tree/dead.package ]; then
|
|
# continue
|
|
# fi
|
|
if [ -d $working_tree ]; then
|
|
pushd $working_tree &>/dev/null
|
|
sed -i "s@url = .*@url = $repo@" $working_tree/.git/config
|
|
git pull --all &>/dev/null
|
|
popd &>/dev/null
|
|
if [ -e $working_tree/dead.package ]; then
|
|
rm -f $working_tree/$bname.spec
|
|
rm -f $SPEC_DIR/$bname.spec
|
|
elif [ -e $working_tree/$bname.spec ]; then
|
|
cp -p $working_tree/$bname.spec $SPEC_DIR/
|
|
fi
|
|
else
|
|
pushd $SEED_DIR &>/dev/null
|
|
git clone $repo &>/dev/null
|
|
popd &>/dev/null
|
|
if [ -e $working_tree/dead.package ]; then
|
|
rm -f $working_tree/$bname.spec
|
|
rm -f $SPEC_DIR/$bname.spec
|
|
elif [ -e $working_tree/$bname.spec ]; then
|
|
cp -p $working_tree/$bname.spec $SPEC_DIR/
|
|
fi
|
|
fi
|
|
|
|
# Now we go through each of the defined extra branches, and if the branch exists and
|
|
# contains a specfile, we move it to the $EXTRA_BRANCHES_PREFIX$branchname directory
|
|
pushd $working_tree &>/dev/null
|
|
for branchname in ${EXTRA_BRANCHES[@]}; do
|
|
git ls-remote --exit-code origin $branchname &>/dev/null
|
|
# if exit code for git ls-remote is 0, we found the branch
|
|
if [ $? -eq 0 ]; then
|
|
git checkout $branchname &>/dev/null
|
|
if [ -e $working_tree/$bname.spec ]; then
|
|
cp -p $working_tree/$bname.spec $WORK_DIR/$EXTRA_BRANCHES_PREFIX$branchname/
|
|
fi
|
|
git checkout rawhide &>/dev/null
|
|
fi
|
|
done
|
|
popd &>/dev/null
|
|
|
|
sed -i "s@url = .*@url = https://src.fedoraproject.org/rpms/$bname@" $working_tree/.git/config
|
|
|
|
done
|
|
|
|
# tar up and copy the rawhide / regular seed and specs tarballs like we always have
|
|
((verbose)) && echo Tarring git-seed
|
|
tar -cf - -C$WORK_DIR $(basename $SEED_DIR) | xz -2 >$OUTPUT_DIR/.git-seed-$DATE.tar.xz
|
|
((verbose)) && echo Tarring rpm-specs
|
|
tar -cf - -C$WORK_DIR $(basename $SPEC_DIR) | xz -2 >$OUTPUT_DIR/.rpm-specs-$DATE.tar.xz
|
|
((verbose)) && echo removing old git-seed tarball
|
|
rm $OUTPUT_DIR/git-seed*tar.xz
|
|
((verbose)) && echo removing old rpm-specs tarball
|
|
rm $OUTPUT_DIR/rpm-specs*tar.xz
|
|
((verbose)) && echo moving new git-seed tarball into place
|
|
mv $OUTPUT_DIR/.git-seed-$DATE.tar.xz $OUTPUT_DIR/git-seed-$DATE.tar.xz
|
|
((verbose)) && echo moving new rpm-specs tarball into place
|
|
mv $OUTPUT_DIR/.rpm-specs-$DATE.tar.xz $OUTPUT_DIR/rpm-specs-$DATE.tar.xz
|
|
((verbose)) && echo creating links to -latest tarballs
|
|
ln -s git-seed-$DATE.tar.xz $OUTPUT_DIR/git-seed-latest.tar.xz
|
|
ln -s rpm-specs-$DATE.tar.xz $OUTPUT_DIR/rpm-specs-latest.tar.xz
|
|
|
|
# tar up and copy over the spec tarballs for the extra epel branches
|
|
for branchname in ${EXTRA_BRANCHES[@]}; do
|
|
((verbose)) && echo tarring up rpm-specs for $branchname
|
|
tar -cf - -C$WORK_DIR $(basename $WORK_DIR/$EXTRA_BRANCHES_PREFIX$branchname) | xz -2 >$OUTPUT_DIR/.rpm-specs-$branchname-$DATE.tar.xz
|
|
rm $OUTPUT_DIR/rpm-specs-$branchname*.tar.xz
|
|
mv $OUTPUT_DIR/.rpm-specs-$branchname-$DATE.tar.xz $OUTPUT_DIR/rpm-specs-$branchname-$DATE.tar.xz
|
|
done
|
|
|
|
((verbose)) && echo running alt arch report script
|
|
python2 /usr/local/bin/alternative_arch_report.py /srv/git_seed/rpm-specs/ |
|
|
mail -s "[Report] Packages Restricting Arches" arch-excludes@lists.fedoraproject.org
|