]> git.pld-linux.org Git - projects/pld-builder.new.git/commitdiff
Make builddir as short as possible.
authorArkadiusz Miśkiewicz <arekm@maven.pl>
Wed, 27 Jan 2016 19:51:52 +0000 (20:51 +0100)
committerArkadiusz Miśkiewicz <arekm@maven.pl>
Wed, 27 Jan 2016 19:51:52 +0000 (20:51 +0100)
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
PLD_Builder/request.py
PLD_Builder/rpm_builder.py

index b3a3dc7092b3f6d72759e7074ab297f2e99f6905..0131e19403aac55f52815d8b348a1f6fb7259dfc 100644 (file)
@@ -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,
         }
index 9cdc0556980cbad73bcd919d1f50253a0ef37807..3633fca4990e91caaa8195ad30252c3678a1904e 100644 (file)
@@ -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' " \
index 3c94a0b94f79e20924a9eaebed89245a6b3ad096..00ef336815e1cf4121610379ad2c6b08551f7a17 100644 (file)
@@ -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):
This page took 0.226794 seconds and 4 git commands to generate.