commit 7bc55d9f2fc55556bff6898e19eec6bbaff14ac9
Author: Mikolaj Izdebski <mizdebsk(a)redhat.com>
Date: Fri Jan 2 08:13:25 2015 +0100
Add --rpm-pid option to depgenerators
depgenerators/fileattrs/maven.attr | 4 ++--
depgenerators/fileattrs/osgi.attr | 4 ++--
depgenerators/maven.prov | 5 +++--
depgenerators/maven.req | 5 +++--
depgenerators/osgi.prov | 5 +++--
depgenerators/osgi.req | 5 +++--
python/javapackages/cache/cache.py | 13 +++++++------
python/javapackages/cache/metadata.py | 5 ++---
python/javapackages/cache/osgi.py | 7 +++----
python/javapackages/common/util.py | 9 +++++++--
10 files changed, 35 insertions(+), 27 deletions(-)
---
diff --git a/depgenerators/fileattrs/maven.attr b/depgenerators/fileattrs/maven.attr
index 65c504d..5bead99 100644
--- a/depgenerators/fileattrs/maven.attr
+++ b/depgenerators/fileattrs/maven.attr
@@ -1,5 +1,5 @@
%__maven_provides %{_rpmconfigdir}/maven.prov
-%__maven_provides_opts --cachedir %{_builddir}/%{?buildsubdir} %{?scl:--scl %{?scl}}
+%__maven_provides_opts --cachedir %{_builddir}/%{?buildsubdir} --rpm-pid
%{lua:print(posix.getprocessid("pid"))} %{?scl:--scl %{?scl}}
%__maven_requires %{_rpmconfigdir}/maven.req
-%__maven_requires_opts --cachedir %{_builddir}/%{?buildsubdir} %{?scl:--scl %{?scl}}
+%__maven_requires_opts --cachedir %{_builddir}/%{?buildsubdir} --rpm-pid
%{lua:print(posix.getprocessid("pid"))} %{?scl:--scl %{?scl}}
%__maven_path ^%{_datadir}/maven-metadata/.*
diff --git a/depgenerators/fileattrs/osgi.attr b/depgenerators/fileattrs/osgi.attr
index f2b3342..73a8b00 100644
--- a/depgenerators/fileattrs/osgi.attr
+++ b/depgenerators/fileattrs/osgi.attr
@@ -1,5 +1,5 @@
%__osgi_provides %{_rpmconfigdir}/osgi.prov
-%__osgi_provides_opts --cachedir %{_builddir}/%{?buildsubdir} %{?scl:--scl %{?scl}}
+%__osgi_provides_opts --cachedir %{_builddir}/%{?buildsubdir} --rpm-pid
%{lua:print(posix.getprocessid("pid"))} %{?scl:--scl %{?scl}}
%__osgi_requires %{!?scl:%{_rpmconfigdir}/osgi.req}%{?scl:%{_root_bindir}/true}
-%__osgi_requires_opts --cachedir %{_builddir}/%{?buildsubdir} %{?scl:--scl %{?scl}}
+%__osgi_requires_opts --cachedir %{_builddir}/%{?buildsubdir} --rpm-pid
%{lua:print(posix.getprocessid("pid"))} %{?scl:--scl %{?scl}}
%__osgi_path ^(.*\\.jar|((%{_prefix}/lib(64)?|%{_datadir})/.*/META-INF/MANIFEST.MF))$
diff --git a/depgenerators/maven.prov b/depgenerators/maven.prov
index 4887605..4f20a1f 100755
--- a/depgenerators/maven.prov
+++ b/depgenerators/maven.prov
@@ -51,7 +51,7 @@ class TagBuilder:
paths = [line.rstrip() for line in filelist.readlines()]
_log.info("input: {fl}".format(fl=paths))
- cache = MetadataCache(rpmconf.cachedir, rpmconf.scl)
+ cache = MetadataCache(rpmconf)
for path in paths:
metadata = cache.get_metadata_for_path(path)
@@ -69,9 +69,10 @@ class TagBuilder:
if __name__ == "__main__":
+ rpmconf = None
try:
rpmconf = init_rpmgen(sys.argv)
builder = TagBuilder()
except Exception:
traceback.print_exc(file=sys.stderr)
- kill_parent_process()
+ kill_parent_process(rpmconf)
diff --git a/depgenerators/maven.req b/depgenerators/maven.req
index 408d23b..9711965 100755
--- a/depgenerators/maven.req
+++ b/depgenerators/maven.req
@@ -61,7 +61,7 @@ class TagBuilder(object):
_log.info("input: {fl}".format(fl=paths))
self.config = self._get_config()
- cache = MetadataCache(rpmconf.cachedir, rpmconf.scl)
+ cache = MetadataCache(rpmconf)
self.provided_artifacts = cache.get_provided_artifacts()
self.skipped_artifacts = cache.get_skipped_artifacts()
self.provided_osgi = cache.get_provided_osgi()
@@ -353,9 +353,10 @@ class TagBuilder(object):
if __name__ == "__main__":
+ rpmconf = None
try:
rpmconf = init_rpmgen(sys.argv)
builder = TagBuilder()
except Exception:
traceback.print_exc(file=sys.stderr)
- kill_parent_process()
+ kill_parent_process(rpmconf)
diff --git a/depgenerators/osgi.prov b/depgenerators/osgi.prov
index 72b1ecd..a1ca7f1 100755
--- a/depgenerators/osgi.prov
+++ b/depgenerators/osgi.prov
@@ -48,7 +48,7 @@ class TagBuilder(object):
paths = [x.rstrip() for x in filelist.readlines()]
_log.info("input: {fl}".format(fl=paths))
- cache = OSGiCache(rpmconf.cachedir, scl=rpmconf.scl)
+ cache = OSGiCache(rpmconf)
provides = []
for path in paths:
@@ -72,9 +72,10 @@ class TagBuilder(object):
if __name__ == "__main__":
+ rpmconf = None
try:
rpmconf = init_rpmgen(sys.argv)
builder = TagBuilder()
except Exception:
traceback.print_exc(file=sys.stderr)
- kill_parent_process()
+ kill_parent_process(rpmconf)
diff --git a/depgenerators/osgi.req b/depgenerators/osgi.req
index 0557807..308059b 100755
--- a/depgenerators/osgi.req
+++ b/depgenerators/osgi.req
@@ -50,7 +50,7 @@ class TagBuilder(object):
paths = [x.rstrip() for x in filelist.readlines()]
_log.info("input: {fl}".format(fl=paths))
- cache = OSGiCache(rpmconf.cachedir, scl=rpmconf.scl)
+ cache = OSGiCache(rpmconf)
requires = []
for path in paths:
@@ -80,6 +80,7 @@ class TagBuilder(object):
if __name__ == "__main__":
+ rpmconf = None
try:
rpmconf = init_rpmgen(sys.argv)
@@ -92,4 +93,4 @@ if __name__ == "__main__":
builder = TagBuilder()
except Exception:
traceback.print_exc(file=sys.stderr)
- kill_parent_process()
+ kill_parent_process(rpmconf)
diff --git a/python/javapackages/cache/cache.py b/python/javapackages/cache/cache.py
index 85f8200..d50f9ba 100644
--- a/python/javapackages/cache/cache.py
+++ b/python/javapackages/cache/cache.py
@@ -38,9 +38,10 @@ import javapackages.common.config as config
class Cache(object):
- def __init__(self, cachedir, scl=None):
- self._cachedir = cachedir
- self._scl = scl
+ def __init__(self, rpmconf):
+ self._cachedir = rpmconf.cachedir
+ self._rpm_pid = rpmconf.rpm_pid
+ self._scl = rpmconf.scl
def _process_buildroot(self):
cache = {}
@@ -65,10 +66,10 @@ class Cache(object):
try:
cachepath = os.path.join(self._cachedir, self._config_name)
cachefile = open(cachepath, 'rb')
- ppid, cache = pickle.load(cachefile)
+ cached_pid, cache = pickle.load(cachefile)
cachefile.close()
# check if the cache was most likely created during current build
- if ppid != os.getppid():
+ if cached_pid != self._rpm_pid:
logging.warning("Cache in {path} is outdated, skipping"
.format(path=cachepath))
return None
@@ -80,7 +81,7 @@ class Cache(object):
try:
cachefile = open(os.path.join(self._cachedir,
self._config_name), 'wb')
- content = (os.getppid(), cache)
+ content = (self._rpm_pid, cache)
pickle.dump(content, cachefile)
cachefile.close()
except IOError:
diff --git a/python/javapackages/cache/metadata.py
b/python/javapackages/cache/metadata.py
index 64bb0b5..89e7f1c 100644
--- a/python/javapackages/cache/metadata.py
+++ b/python/javapackages/cache/metadata.py
@@ -37,9 +37,8 @@ from javapackages.cache.cache import Cache
class MetadataCache(Cache):
- def __init__(self, cachedir, scl=None):
- self._cachedir = cachedir
- self._scl = scl
+ def __init__(self, rpmconf):
+ super(MetadataCache, self).__init__(rpmconf)
self._config_name = config.metadata_cache_f
self._cache = self._read_cache()
diff --git a/python/javapackages/cache/osgi.py b/python/javapackages/cache/osgi.py
index 9936bb4..c5832f3 100644
--- a/python/javapackages/cache/osgi.py
+++ b/python/javapackages/cache/osgi.py
@@ -42,12 +42,11 @@ from javapackages.cache.metadata import MetadataCache
class OSGiCache(Cache):
- def __init__(self, cachedir, scl=None):
- self._cachedir = cachedir
- self._scl = scl
+ def __init__(self, rpmconf):
+ super(OSGiCache, self).__init__(rpmconf)
self._config_name = config.osgi_cache_f
self._cache = self._read_cache()
- self._metadata_cache = MetadataCache(cachedir, scl)
+ self._metadata_cache = MetadataCache(rpmconf)
if self._cache is None:
self._cache = self._process_buildroot()
diff --git a/python/javapackages/common/util.py b/python/javapackages/common/util.py
index 9d259f7..7a9ff21 100644
--- a/python/javapackages/common/util.py
+++ b/python/javapackages/common/util.py
@@ -40,7 +40,9 @@ import logging
from optparse import OptionParser
-def kill_parent_process():
+def kill_parent_process(rpmconf):
+ if not rpmconf:
+ return
# mock may kill us immediately after rpmbuild dies, before output
# is flushed. To avoid this race condiditon we must explicitly
# flush any pending output before trying to kill parent.
@@ -48,7 +50,7 @@ def kill_parent_process():
sys.stderr.flush()
# rpmbuild ignores non-zero exit codes, but this is bad. Make sure
# the build fails and doesn't silently ignore problems
- os.kill(os.getppid(), signal.SIGTERM)
+ os.kill(rpmconf.rpm_pid, signal.SIGTERM)
def args_to_unicode(args):
@@ -87,6 +89,7 @@ def _init_rpmgen_logging():
def _parse_argv(argv):
parser = OptionParser()
parser.add_option("--cachedir", dest="cachedir")
+ parser.add_option("--rpm-pid", type="int",
dest="rpm_pid")
parser.add_option("--scl", dest="scl", default=None)
return parser.parse_args()
@@ -98,6 +101,8 @@ def _parse_rpmgen_args(argv):
if not options.cachedir:
raise Exception("Missing option: --cachedir")
options.cachedir = _get_cachedir(options.cachedir)
+ if not options.rpm_pid:
+ raise Exception("Missing option: --rpm-pid")
return options