#40 Builds in /tmp instead of $CWD
Merged 3 years ago by jhutar. Opened 3 years ago by msuchy.
msuchy/rpmfluff fix30  into  master

file modified
+15 -4
@@ -20,6 +20,7 @@ 

  import re

  import shutil

  import subprocess

+ import tempfile

  

  from .check import CheckTrigger, CheckSourceFile, CheckPayloadFile

  from .samples import hello_world, simple_library_source, sample_man_page, \
@@ -49,13 +50,15 @@ 

      """

      Wrapper for an invocation of rpmbuild

      """

-     def __init__(self, buildArchs=None):

+     def __init__(self, buildArchs=None, tmpdir=True):

          """

          buildArchs:

              if None, the build will happen on the current arch

              if non-None, should be a list of strings: the archs to build on

          """

          self.buildArchs = buildArchs

+         self.tmpdir = tmpdir

+         self.tmpdir_location = None

  

      def is_up_to_date(self):

          # FIXME: crude check for now: does the build dir exist?
@@ -69,6 +72,8 @@ 

  

      def clean(self):

          shutil.rmtree(self.get_base_dir(), ignore_errors=True)

+         if self.tmpdir and self.tmpdir_location:

+             shutil.rmtree(self.tmpdir_location, ignore_errors=True)

  

      def sanitize_string(self, name):

          """Strip what can be dangerous for filenames"""
@@ -76,6 +81,8 @@ 

  

      def __create_directories(self):

          """Sets up the directory hierarchy for the build"""

+         if self.tmpdir and not (self.tmpdir_location and os.path.isdir(self.tmpdir_location)):

+             self.tmpdir_location = tempfile.mkdtemp(prefix="rpmfluff-")

          os.mkdir(self.get_base_dir())

  

          # Make fake rpmbuild directories
@@ -168,8 +175,8 @@ 

  class SimpleRpmBuild(RpmBuild):

      """A wrapper for rpmbuild that also provides a canned way of generating a

      specfile and the source files."""

-     def __init__(self, name, version, release, buildArchs=None):

-         RpmBuild.__init__(self, buildArchs)

+     def __init__(self, name, version, release, buildArchs=None, tmpdir=True):

+         RpmBuild.__init__(self, buildArchs=buildArchs, tmpdir=tmpdir)

  

          self.specfileEncoding = 'utf-8'

  
@@ -211,7 +218,11 @@ 

          self.specbasename = None

  

      def get_base_dir(self):

-         return "test-rpmbuild-%s-%s-%s" % (self.name, self.version, expand_macros(self.release))

+         if self.tmpdir_location:

+             return "%s/test-rpmbuild-%s-%s-%s" % (self.tmpdir_location, self.name, self.version,

+                                                   expand_macros(self.release))

+         else:

+             return "test-rpmbuild-%s-%s-%s" % (self.name, self.version, expand_macros(self.release))

  

      def get_subpackage_names(self):

          """

file modified
+5 -5
@@ -96,7 +96,7 @@ 

                  "build directory %s already exists" % self.rpmbuild.get_base_dir())

  

      def tearDown(self):

-         shutil.rmtree(self.rpmbuild.get_base_dir(), ignore_errors=True)

+         self.rpmbuild.clean()

  

      def test_build(self):

          self.rpmbuild.make()
@@ -804,7 +804,7 @@ 

          package.add_devel_subpackage()

          package.add_subpackage('python')

          repo = YumRepoBuild([package])

-         self.addCleanup(shutil.rmtree, package.get_base_dir())

+         self.addCleanup(package.clean)

          self.addCleanup(shutil.rmtree, repo.repoDir)

  

          repo.make(expectedArch)
@@ -819,7 +819,7 @@ 

      def test_multiple_arches(self):

          package = SimpleRpmBuild('test-multilib-package', '0.1', '1', ['i386', 'x86_64'])

          repo = YumRepoBuild([package])

-         self.addCleanup(shutil.rmtree, package.get_base_dir())

+         self.addCleanup(package.clean)

          self.addCleanup(shutil.rmtree, repo.repoDir)

  

          repo.make('i386', 'x86_64')
@@ -834,8 +834,8 @@ 

          archful_package = SimpleRpmBuild('test-package', '0.1', '1')

          noarch_package = SimpleRpmBuild('python-package', '0.1', '1', ['noarch'])

          repo = YumRepoBuild([archful_package, noarch_package])

-         self.addCleanup(shutil.rmtree, archful_package.get_base_dir())

-         self.addCleanup(shutil.rmtree, noarch_package.get_base_dir())

+         self.addCleanup(archful_package.clean)

+         self.addCleanup(noarch_package.clean)

          self.addCleanup(shutil.rmtree, repo.repoDir)

  

          repo.make(expectedArch, 'noarch')

But you can change the behaviour by tmpdir param.

Resolves https://pagure.io/rpmfluff/issue/30

Pull-Request has been merged by jhutar

3 years ago
Metadata