forked from pool/cloud-init
Robert Schweikert
529dfe1b71
+ Make builds reproducible OBS-URL: https://build.opensuse.org/package/show/Cloud:Tools/cloud-init?expand=0&rev=101
51 lines
1.7 KiB
Diff
51 lines
1.7 KiB
Diff
--- setup.py.orig
|
|
+++ setup.py
|
|
@@ -18,11 +18,13 @@ import tempfile
|
|
|
|
import setuptools
|
|
from setuptools.command.install import install
|
|
+from setuptools.command.egg_info import egg_info
|
|
|
|
from distutils.errors import DistutilsArgError
|
|
|
|
import subprocess
|
|
|
|
+RENDERED_TMPD_PREFIX = "RENDERED_TEMPD"
|
|
|
|
def is_f(p):
|
|
return os.path.isfile(p)
|
|
@@ -107,7 +109,7 @@ def render_tmpl(template):
|
|
return template
|
|
|
|
topdir = os.path.dirname(sys.argv[0])
|
|
- tmpd = tempfile.mkdtemp(dir=topdir)
|
|
+ tmpd = tempfile.mkdtemp(dir=topdir, prefix=RENDERED_TMPD_PREFIX)
|
|
atexit.register(shutil.rmtree, tmpd)
|
|
bname = os.path.basename(template).rstrip(tmpl_ext)
|
|
fpath = os.path.join(tmpd, bname)
|
|
@@ -155,6 +157,24 @@ if os.uname()[0] == 'FreeBSD':
|
|
elif os.path.isfile('/etc/redhat-release'):
|
|
USR_LIB_EXEC = "usr/libexec"
|
|
|
|
+class MyEggInfo(egg_info):
|
|
+ """This makes sure to not include the rendered files in SOURCES.txt."""
|
|
+
|
|
+ def find_sources(self):
|
|
+ ret = egg_info.find_sources(self)
|
|
+ # update the self.filelist.
|
|
+ self.filelist.exclude_pattern(RENDERED_TMPD_PREFIX + ".*",
|
|
+ is_regex=True)
|
|
+ # but since mfname is already written we have to update it also.
|
|
+ mfname = os.path.join(self.egg_info, "SOURCES.txt")
|
|
+ if os.path.exists(mfname):
|
|
+ with open(mfname) as fp:
|
|
+ files = [f for f in fp
|
|
+ if not f.startswith(GENERATED_FILE_PREFIX)]
|
|
+ with open(mfname, "w") as fp:
|
|
+ fp.write(''.join(files))
|
|
+ return ret
|
|
+
|
|
|
|
# TODO: Is there a better way to do this??
|
|
class InitsysInstallData(install):
|