X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=config%2Fdebian%2Fdinstall.functions;h=2981c8c303d513bc223a2ff7d21c68ae00f1c58e;hb=d1b9fb11b2adefa328f8ea41c59b835e148c6f8e;hp=e4de479e20ab2c6cdb9935b8cb695c76a2251112;hpb=1d6c35970efaaa35a4511976510661b548e19514;p=dak.git diff --git a/config/debian/dinstall.functions b/config/debian/dinstall.functions index e4de479e..2981c8c3 100644 --- a/config/debian/dinstall.functions +++ b/config/debian/dinstall.functions @@ -169,9 +169,11 @@ function mpfm() { function packages() { log "Generating Packages and Sources files" - cd $configdir - #apt-ftparchive generate apt.conf - dak generate-packages-sources + #cd $configdir + #dak generate-packages-sources + # XXX: disable again later + dak generate-packages-sources2 --description-md5 -o Dir::Root=$webdir/newdists/ + dak generate-packages-sources2 dak contents generate } @@ -181,8 +183,14 @@ function pdiff() { } function release() { + # XXX: disable once we can remove i18n/Index (#649314) + log "Generating i18n/Index" + (cd "$ftpdir/dists"; for dist in testing unstable; do $scriptsdir/generate-i18n-Index $dist; done) + (cd "$webdir/newdists/dists"; for dist in testing unstable; do $scriptsdir/generate-i18n-Index $dist; done) log "Generating Release files" dak generate-releases + # XXX: disable again later + dak generate-releases -o Dir::Root=$webdir/newdists/ } function dakcleanup() { @@ -235,57 +243,18 @@ function mkmaintainers() { log 'Creating Maintainers index ... ' cd $indices - dak make-maintainers ${scriptdir}/masterfiles/pseudo-packages.maintainers | \ - sed -e "s/~[^ ]*\([ ]\)/\1/" | \ - awk '{printf "%-20s ", $1; for (i=2; i<=NF; i++) printf "%s ", $i; printf "\n";}' > .new-maintainers - - if ! cmp -s .new-maintainers Maintainers || [ ! -f Maintainers ]; then - log "installing Maintainers ... " - mv -f .new-maintainers Maintainers - gzip -9v .new-maintainers.gz - mv -f .new-maintainers.gz Maintainers.gz - else - rm -f .new-maintainers - fi -} - -function mkuploaders() { - log 'Creating Uploaders index ... ' - - cd $indices - dak make-maintainers -u ${scriptdir}/masterfiles/pseudo-packages.maintainers | \ - sed -e "s/~[^ ]*\([ ]\)/\1/" | \ - awk '{printf "%-20s ", $1; for (i=2; i<=NF; i++) printf "%s ", $i; printf "\n";}' > .new-uploaders - - if ! cmp -s .new-uploaders Uploaders || [ ! -f Uploaders ]; then - log "installing Uploaders ... " - mv -f .new-uploaders Uploaders - gzip -9v .new-uploaders.gz - mv -f .new-uploaders.gz Uploaders.gz - else - rm -f .new-uploaders - fi + dak make-maintainers ${scriptdir}/masterfiles/pseudo-packages.maintainers + gzip -9v --rsyncable Maintainers.gz + gzip -9v --rsyncable Uploaders.gz } function copyoverrides() { log 'Copying override files into public view ...' - for ofile in $copyoverrides ; do - cd $overridedir - chmod g+w override.$ofile - - cd $indices - - newofile=override.$ofile.gz - rm -f .newover-$ofile.gz - pc="`gzip 2>&1 -9nv <$overridedir/override.$ofile >.newover-$ofile.gz`" - if ! cmp -s .newover-$ofile.gz $newofile || [ ! -f $newofile ]; then - log " installing new $newofile $pc" - mv -f .newover-$ofile.gz $newofile - chmod g+w $newofile - else - rm -f .newover-$ofile.gz - fi + for ofile in ${overridedir}/override.{lenny,squeeze,wheezy,sid}.{,extra.}{main,contrib,non-free}*; do + bname=${ofile##*/} + gzip -9cv --rsyncable ${ofile} > ${indices}/${bname}.gz + chmod g+w ${indices}/${bname}.gz done } @@ -295,7 +264,7 @@ function mkfilesindices() { ARCHLIST=$(tempfile) - log "Querying $PGDATABASE..." + log "Querying postgres" echo 'SELECT l.path, f.filename, a.arch_string FROM location l JOIN files f ON (f.location = l.id) LEFT OUTER JOIN (binaries b JOIN architecture a ON (b.architecture = a.id)) ON (f.id = b.file)' | psql -At | sed 's/|//;s,^/srv/ftp-master.debian.org/ftp,.,' | sort >$ARCHLIST includedirs () { @@ -435,6 +404,53 @@ function ddaccess() { } function mirrorpush() { + log "Checking the public archive copy" + cd ${mirrordir}/dists + + broken=0 + for release in $(find . -name "InRelease"); do + echo "Processing: ${release}" + subdir=${release%/InRelease} + while read SHASUM SIZE NAME; do + if ! [ -f "${subdir}/${NAME}" ]; then + bname=$(basename ${NAME}) + if [[ "${bname}" =~ ^(Packages|Sources|Translation-[a-zA-Z_]+)$ ]]; then + # We don't keep unpacked files, don't check for their existance. + # We might want to go and check their unpacked shasum, but right now + # I don't care. I believe it should be enough if all the packed shasums + # match. + continue + fi + broken=$(( broken + 1 )) + echo "File ${subdir}/${NAME} is missing" + continue + fi + + # We do have symlinks in the tree (see the contents files currently). + # So we use "readlink -f" to check the size of the target, as thats basically + # what gen-releases does + fsize=$(stat -c %s $(readlink -f "${subdir}/${NAME}")) + if [ ${fsize} -ne ${SIZE} ]; then + broken=$(( broken + 1 )) + echo "File ${subdir}/${NAME} has size ${fsize}, expected is ${SIZE}" + continue + fi + + fshasum=$(sha1sum $(readlink -f "${subdir}/${NAME}")) + fshasum=${fshasum%% *} + if [ "${fshasum}" != "${SHASUM}" ]; then + broken=$(( broken + 1 )) + echo "File ${subdir}/${NAME} has checksum ${fshasum}, expected is ${SHASUM}" + continue + fi + done < <(sed '1,/SHA1:/d' "${release}" | sed '/SHA256:/,$d') + done + + if [ $broken -gt 0 ]; then + log_error "Trouble with the public mirror, found ${broken} errors" + return 21 + fi + log "Starting the mirrorpush" date -u > /srv/ftp.debian.org/web/mirrorstart echo "Using dak v1" >> /srv/ftp.debian.org/web/mirrorstart @@ -555,3 +571,36 @@ function changelogs() { rsync -aHW --delete --delete-after --ignore-errors ${exportdir}/changelogs/. . sudo -H -u archvsync /home/archvsync/runmirrors metaftpdo > ~dak/runmirrors-metadata.log 2>&1 & } + +function gitpdiff() { + # Might be that we want to change this to have more than one git repository. + # Advantage of one is that we do not need much space in terms of storage in git itself, + # git gc is pretty good on our input. + # But it might be faster. Well, lets test. + log "Adjusting the git tree for pdiffs" + cd ${dbdir}/git/git/ + + # The regex needs the architectures seperated with \| + garchs=$(dak admin a list|sed -e ':q;N;s/\n/\\|/g;t q') + + # First, get all the files we want to work on. ../dists/ is a symlink to the real dists/ we + # want to work with. + # Also, we only want contents, packages and sources. + for file in $(find ../dists/ -regex ".*/\(Contents-\($archs\)\|\(Packages\|Sources\)\).gz"); do + log "${file}" + basen=${file%%.gz}; + basen=${basen##../}; + dir=${basen%/*}; + mkdir -p $dir; + zcat $file > $basen; + done + + # Second, add all there is into git + cd dists + git add . + # Maybe we want to make this the same for tag and commit? But well, shouldn't matter + COMD=$(date -Is) + TAGD=$(date +%Y-%m-%d-%H-%M) + git commit -m "Commit of ${COMD}" + git tag "${TAGD}" + }