[projects/pld-builder.new] Make builddir as short as possible.

arekm arekm at pld-linux.org
Wed Jan 27 20:54:36 CET 2016


commit 839f8b9ff1983da413f67587a62c48322fcb747d
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date:   Wed Jan 27 20:51:52 2016 +0100

    Make builddir as short as possible.
    
    We want /tmp/B.XYZ to be as short as possible. It ends up in various
    process building paths which can lead to:
    make[2]: execvp: /bin/sh: Argument list too long

 PLD_Builder/install.py     |  4 ++--
 PLD_Builder/request.py     | 12 +++++++++---
 PLD_Builder/rpm_builder.py | 12 ++++++------
 3 files changed, 17 insertions(+), 11 deletions(-)
---
diff --git a/PLD_Builder/install.py b/PLD_Builder/install.py
index b3a3dc7..0131e19 100644
--- a/PLD_Builder/install.py
+++ b/PLD_Builder/install.py
@@ -105,7 +105,7 @@ def uninstall_self_conflict(b):
         "rpmbuild -bp --nobuild --short-circuit --define 'prep exit 0' %(rpmdefs)s %(topdir)s/%(spec)s 2>&1" % {
         'tmpdir': b.tmpdir(),
         'rpmdefs' : b.rpmbuild_opts(),
-        'topdir' : b._topdir,
+        'topdir' : b.get_topdir(),
         'spec': b.spec,
     })
     # java-sun >= 1.5 conflicts with soprano-2.1.67-1.src
@@ -131,7 +131,7 @@ def install_br(r, b):
         tmpdir = b.tmpdir()
         cmd = "set -e; TMPDIR=%(tmpdir)s rpmbuild --nobuild %(rpmdefs)s %(topdir)s/%(spec)s 2>&1" % {
             'tmpdir': tmpdir,
-            'topdir' : b._topdir,
+            'topdir' : b.get_topdir(),
             'rpmdefs' : b.rpmbuild_opts(),
             'spec': b.spec,
         }
diff --git a/PLD_Builder/request.py b/PLD_Builder/request.py
index 9cdc055..3633fca 100644
--- a/PLD_Builder/request.py
+++ b/PLD_Builder/request.py
@@ -10,6 +10,7 @@ import os
 import urllib
 import cgi
 import pytz
+import tempfile
 
 import util
 import log
@@ -183,7 +184,12 @@ class Batch:
 
         self.parse_xml(e)
 
-        self._topdir = '/tmp/B.%s' % self.b_id
+        self.__topdir = None
+
+    def get_topdir(self):
+        if not self.__topdir:
+            self.__topdir = tempfile.mkdtemp(prefix='B.', dir='/tmp')
+        return self.__topdir
 
     def parse_xml(self, e):
         for c in e.childNodes:
@@ -239,7 +245,7 @@ class Batch:
         # it's better to have TMPDIR and BUILD dir on same partition:
         # + /usr/bin/bzip2 -dc /home/services/builder/rpm/packages/kernel/patch-2.6.27.61.bz2
         # patch: **** Can't rename file /tmp/B.a1b1d3/poKWwRlp to drivers/scsi/hosts.c : No such file or directory
-        path = os.path.join(self._topdir, 'BUILD', 'tmp')
+        path = os.path.join(self.get_topdir(), 'BUILD', 'tmp')
         return path
 
     def is_done(self):
@@ -343,7 +349,7 @@ class Batch:
         """
         rpmopts = self.bconds_string() + self.kernel_string() + self.target_string() + self.defines_string()
         rpmdefs = \
-            "--define '_topdir %s' " % self._topdir + \
+            "--define '_topdir %s' " % self.get_topdir() + \
             "--define '_specdir %{_topdir}' "  \
             "--define '_sourcedir %{_specdir}' " \
             "--define '_rpmdir %{_topdir}/RPMS' " \
diff --git a/PLD_Builder/rpm_builder.py b/PLD_Builder/rpm_builder.py
index 3c94a0b..00ef336 100644
--- a/PLD_Builder/rpm_builder.py
+++ b/PLD_Builder/rpm_builder.py
@@ -189,7 +189,7 @@ def build_rpm(r, b):
         rpm -Uhv --nodeps %(rpmdefs)s %(src_rpm)s;
         rm -f %(src_rpm)s;
     """ % {
-        'topdir' : b._topdir,
+        'topdir' : b.get_topdir(),
         'rpmdefs' : b.rpmbuild_opts(),
         'src_rpm' : b.src_rpm
     }, logfile = b.logfile)
@@ -208,7 +208,7 @@ def build_rpm(r, b):
             "rpmbuild -bp --short-circuit --nodeps %(rpmdefs)s --define 'prep exit 0' %(topdir)s/%(spec)s" % {
             'tmpdir': tmpdir,
             'nice' : config.nice,
-            'topdir' : b._topdir,
+            'topdir' : b.get_topdir(),
             'rpmdefs' : b.rpmbuild_opts(),
             'spec': b.spec,
         }
@@ -232,7 +232,7 @@ def build_rpm(r, b):
                     'tmpdir': tmpdir,
                     'nice' : config.nice,
                     'rpmdefs' : b.rpmbuild_opts(),
-                    'topdir' : b._topdir,
+                    'topdir' : b.get_topdir(),
                     'max_jobs' : max_jobs,
                     'spec': b.spec,
                 }
@@ -243,7 +243,7 @@ def build_rpm(r, b):
                 b.log_line("ended at: %s, done in %s" % (time.asctime(), datetime.timedelta(0, end_time - begin_time)))
                 if res:
                     res = "FAIL"
-                files = util.collect_files(b.logfile, basedir = b._topdir)
+                files = util.collect_files(b.logfile, basedir = b.get_topdir())
                 if len(files) > 0:
                     r.chroot_files.extend(files)
                 else:
@@ -261,7 +261,7 @@ def build_rpm(r, b):
         chmod -R u+rwX %(topdir)s/BUILD;
         rm -rf %(topdir)s/{tmp,BUILD}
     """ % {
-        'topdir' : b._topdir,
+        'topdir' : b.get_topdir(),
     }, logfile = b.logfile)
 
     def ll(l):
@@ -296,7 +296,7 @@ def build_rpm(r, b):
         set -ex;
         rm -rf %(topdir)s;
     """ % {
-        'topdir' : b._topdir,
+        'topdir' : b.get_topdir(),
     }, logfile = b.logfile)
 
     def uploadinfo(b):
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/projects/pld-builder.new.git/commitdiff/839f8b9ff1983da413f67587a62c48322fcb747d



More information about the pld-cvs-commit mailing list