From: Joerg Jaspert Date: Mon, 29 Apr 2013 19:25:06 +0000 (+0200) Subject: Merge remote-tracking branch 'drkranz/changelogs' into merge X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=804dd3773d8322fb28c165e24b46d3d025f044c2;hp=06e99163b927ed02096fd144e7b909a495337082;p=dak.git Merge remote-tracking branch 'drkranz/changelogs' into merge * drkranz/changelogs: Generate a lock to protect changelog export runs Allow to specify a custom unpack directory in UnpackedSource class --- diff --git a/config/debian/dinstall.functions b/config/debian/dinstall.functions index f6287a8d..1cfdf28b 100644 --- a/config/debian/dinstall.functions +++ b/config/debian/dinstall.functions @@ -9,6 +9,11 @@ function remove_daily_lock() { rm -f $LOCK_DAILY } +# Remove changelog lock +function remove_changelog_lock() { + rm -f $LOCK_CHANGELOG +} + # Remove all locks function remove_all_locks() { rm -f $LOCK_DAILY $LOCK_ACCEPTED @@ -614,19 +619,22 @@ EOF # extract changelogs and stuff function changelogs() { - log "Extracting changelogs" - dak make-changelog -e -a ftp-master - [ -f ${exportdir}/changelogs/filelist.yaml ] && xz -f ${exportdir}/changelogs/filelist.yaml - mkdir -p ${exportpublic}/changelogs - cd ${exportpublic}/changelogs - rsync -aHW --delete --delete-after --ignore-errors ${exportdir}/changelogs/. . - sudo -H -u staticsync /usr/local/bin/static-update-component ftp-master.metadata.debian.org >/dev/null 2>&1 & - - #dak make-changelog -e -a backports - #[ -f /srv/backports-master.debian.org/export/changelogs/filelist.yaml ] && xz -f /srv/backports-master.debian.org/export/changelogs/filelist.yaml - #mkdir -p /srv/backports-master.debian.org/rsync/export/changelogs - #cd /srv/backports-master.debian.org/rsync/export/changelogs - #rsync -aHW --delete --delete-after --ignore-errors /srv/backports-master.debian.org/export/changelogs/. . + if lockfile -r3 $LOCK_CHANGELOG; then + log "Extracting changelogs" + dak make-changelog -e -a ftp-master + [ -f ${exportdir}/changelogs/filelist.yaml ] && xz -f ${exportdir}/changelogs/filelist.yaml + mkdir -p ${exportpublic}/changelogs + cd ${exportpublic}/changelogs + rsync -aHW --delete --delete-after --ignore-errors ${exportdir}/changelogs/. . + sudo -H -u staticsync /usr/local/bin/static-update-component ftp-master.metadata.debian.org >/dev/null 2>&1 & + + #dak make-changelog -e -a backports + #[ -f /srv/backports-master.debian.org/export/changelogs/filelist.yaml ] && xz -f /srv/backports-master.debian.org/export/changelogs/filelist.yaml + #mkdir -p /srv/backports-master.debian.org/rsync/export/changelogs + #cd /srv/backports-master.debian.org/rsync/export/changelogs + #rsync -aHW --delete --delete-after --ignore-errors /srv/backports-master.debian.org/export/changelogs/. . + trap remove_changelog_lock EXIT TERM HUP INT QUIT + fi } function gitpdiff() { diff --git a/config/debian/dinstall.variables b/config/debian/dinstall.variables index 81a651d8..f2f88f8d 100644 --- a/config/debian/dinstall.variables +++ b/config/debian/dinstall.variables @@ -40,6 +40,9 @@ LOCK_STOP="$lockdir/archive.stop" # Lock buildd updates LOCK_BUILDD="$lockdir/buildd.lock" +# Lock changelog updates +LOCK_CHANGELOG="$lockdir/changelog.lock" + # Statefile for the users DINSTALLSTATE="${webdir}/dinstall.status" diff --git a/dak/make_changelog.py b/dak/make_changelog.py index 8f7453c9..1f1b1ca3 100755 --- a/dak/make_changelog.py +++ b/dak/make_changelog.py @@ -213,7 +213,7 @@ def export_files(session, archive, clpool, progress=False): for p in unpack.keys(): package = os.path.splitext(os.path.basename(p))[0].split('_') try: - unpacked = UnpackedSource(p) + unpacked = UnpackedSource(p, clpool) tempdir = unpacked.get_root_directory() stats['unpack'] += 1 if progress: diff --git a/daklib/contents.py b/daklib/contents.py index 07734075..e5abcac6 100644 --- a/daklib/contents.py +++ b/daklib/contents.py @@ -394,11 +394,12 @@ class UnpackedSource(object): UnpackedSource extracts a source package into a temporary location and gives you some convinient function for accessing it. ''' - def __init__(self, dscfilename): + def __init__(self, dscfilename, tmpbasedir=None): ''' The dscfilename is a name of a DSC file that will be extracted. ''' - temp_directory = mkdtemp(dir = Config()['Dir::TempPath']) + basedir = tmpbasedir if tmpbasedir else Config()['Dir::TempPath'] + temp_directory = mkdtemp(dir = basedir) self.root_directory = os.path.join(temp_directory, 'root') command = ('dpkg-source', '--no-copy', '--no-check', '-q', '-x', dscfilename, self.root_directory)