]> git.donarmstrong.com Git - dak.git/commitdiff
Merge remote-tracking branch 'drkranz/changelogs' into merge
authorJoerg Jaspert <joerg@debian.org>
Mon, 29 Apr 2013 19:25:06 +0000 (21:25 +0200)
committerJoerg Jaspert <joerg@debian.org>
Mon, 29 Apr 2013 19:25:06 +0000 (21:25 +0200)
* drkranz/changelogs:
  Generate a lock to protect changelog export runs
  Allow to specify a custom unpack directory in UnpackedSource class

config/debian/dinstall.functions
config/debian/dinstall.variables
dak/make_changelog.py
daklib/contents.py

index f6287a8da7337a7aea5a2dcd0eb7a85f18779fba..1cfdf28baf7f7ccbf22f9224fcc51b7f52db2a44 100644 (file)
@@ -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() {
index 81a651d8f807823f595e16545fd07e1fb4558474..f2f88f8d675c62061edf3e86c774fef213d3e2b0 100644 (file)
@@ -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"
 
index 8f7453c9c2475b1205034c21184e6d3aaa2a30fa..1f1b1ca3c46ec0b31fc866bcb89217d79d9b1b56 100755 (executable)
@@ -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:
index 07734075ed4e4d779d221b08eb9799bc5d91d85b..e5abcac61a916d13d15b9ed7c339ffc539d3a504 100644 (file)
@@ -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)