commit ab02ed613a2637e463d643c769e2f97233ec327d
Author: Michal Srb <msrb(a)redhat.com>
Date: Wed Jul 9 14:50:46 2014 +0200
Pass %{_builddir}/%{?buildsubdir} to RPM req/prov generators
Generators use this path to store cache files
depgenerators/fileattrs/maven.attr | 2 ++
depgenerators/fileattrs/osgi.attr | 3 ++-
depgenerators/maven.req | 22 ++++++++++++----------
depgenerators/osgi.prov | 8 ++++++--
depgenerators/osgi.req | 11 +++++++----
macros.d/macros.fjava | 1 -
macros.d/macros.xmvn | 1 -
python/javapackages/common/osgi.py | 7 +++----
python/javapackages/common/util.py | 7 +++++++
test/maven_req_test.py | 7 +++----
test/test_common.py | 8 ++++----
11 files changed, 46 insertions(+), 31 deletions(-)
---
diff --git a/depgenerators/fileattrs/maven.attr b/depgenerators/fileattrs/maven.attr
index fe5d5b8..792b668 100644
--- a/depgenerators/fileattrs/maven.attr
+++ b/depgenerators/fileattrs/maven.attr
@@ -1,3 +1,5 @@
%__maven_provides %{_rpmconfigdir}/maven.prov
+%__maven_provides_opts %{_builddir}/%{?buildsubdir}
%__maven_requires %{_rpmconfigdir}/maven.req
+%__maven_requires_opts %{_builddir}/%{?buildsubdir}
%__maven_path ^%{_datadir}/maven-metadata/.*
diff --git a/depgenerators/fileattrs/osgi.attr b/depgenerators/fileattrs/osgi.attr
index d0c1145..58bba2d 100644
--- a/depgenerators/fileattrs/osgi.attr
+++ b/depgenerators/fileattrs/osgi.attr
@@ -1,4 +1,5 @@
%__osgi_provides %{_rpmconfigdir}/osgi.prov
+%__osgi_provides_opts %{_builddir}/%{?buildsubdir}
%__osgi_requires %{_rpmconfigdir}/osgi.req
+%__osgi_requires_opts %{_builddir}/%{?buildsubdir}
%__osgi_path ^(.*\\.jar$|((%{_libdir}|%{_datadir}).*/MANIFEST.MF))
-
diff --git a/depgenerators/maven.req b/depgenerators/maven.req
index 7b572b1..8e706a3 100755
--- a/depgenerators/maven.req
+++ b/depgenerators/maven.req
@@ -43,8 +43,8 @@ import pickle
from lxml import etree
-from javapackages.common.config import get_configs, get_builddir
-from javapackages.common.util import kill_parent
+from javapackages.common.config import get_configs
+from javapackages.common.util import kill_parent, get_cachedir
from javapackages.maven.pom import POM
from javapackages.maven.artifact import Artifact
from javapackages.metadata.metadata import Metadata, MetadataInvalidException
@@ -104,10 +104,9 @@ class TagBuilder(object):
self.metadata_dir = os.path.dirname(paths[0])
metadata_paths = None
metadata = None
- builddir = get_builddir()
try:
- cachefile = open(os.path.join(builddir,
'.provided_artifacts.cache'), 'r')
+ cachefile = open(os.path.join(cachedir,
'provided_artifacts.cache'), 'r')
self.provided_artifacts = pickle.load(cachefile)
cachefile.close()
except IOError:
@@ -116,11 +115,11 @@ class TagBuilder(object):
if not metadata:
metadata = Metadata(metadata_paths)
self.provided_artifacts.extend(metadata.get_provided_artifacts())
- cachefile =
open(os.path.join(builddir,'.provided_artifacts.cache'), 'w')
+ cachefile =
open(os.path.join(cachedir,'provided_artifacts.cache'), 'w')
pickle.dump(self.provided_artifacts, cachefile)
cachefile.close()
try:
- cachefile = open(os.path.join(builddir, '.provided_osgi.cache'),
'r')
+ cachefile = open(os.path.join(cachedir, 'provided_osgi.cache'),
'r')
self.provided_osgi = pickle.load(cachefile)
cachefile.close()
except IOError:
@@ -129,11 +128,11 @@ class TagBuilder(object):
if not metadata:
metadata = Metadata(metadata_paths)
self.provided_osgi.update(metadata.get_osgi_provides())
- cachefile = open(os.path.join(builddir, '.provided_osgi.cache'),
'w')
+ cachefile = open(os.path.join(cachedir, 'provided_osgi.cache'),
'w')
pickle.dump(self.provided_osgi, cachefile)
cachefile.close()
try:
- cachefile = open(os.path.join(builddir,
'.skipped_artifacts.cache'), 'r')
+ cachefile = open(os.path.join(cachedir,
'skipped_artifacts.cache'), 'r')
self.skipped_artifacts = pickle.load(cachefile)
cachefile.close()
except IOError:
@@ -142,7 +141,7 @@ class TagBuilder(object):
if not metadata:
metadata = Metadata(metadata_paths)
self.skipped_artifacts.extend(metadata.get_skipped_artifacts())
- cachefile = open(os.path.join(builddir,
'.skipped_artifacts.cache'), 'w')
+ cachefile = open(os.path.join(cachedir,
'skipped_artifacts.cache'), 'w')
pickle.dump(self.skipped_artifacts, cachefile)
cachefile.close()
@@ -420,8 +419,11 @@ def compare_artifacts(art1, art2):
return (art1.artifactId == art2.artifactId and
art1.groupId == art2.groupId)
-
+cachedir = None
if __name__ == "__main__":
+ global cachedir
+ if len(sys.argv) > 1:
+ cachedir = get_cachedir(sys.argv[1])
try:
builder = TagBuilder ()
except Exception:
diff --git a/depgenerators/osgi.prov b/depgenerators/osgi.prov
index 11ef530..91cfaac 100755
--- a/depgenerators/osgi.prov
+++ b/depgenerators/osgi.prov
@@ -31,7 +31,7 @@
# Authors: Alexander Kurtakov <akurtako(a)redhat.com>
import javapackages.common.osgi as osgi
-from javapackages.common.util import kill_parent
+from javapackages.common.util import kill_parent, get_cachedir
import sys
import os
@@ -41,7 +41,7 @@ class TagBuilder(object):
filelist = sys.stdin
paths = [x.rstrip() for x in filelist.readlines()]
for path in paths:
- if osgi.look_for_path_in_metadata(path):
+ if osgi.look_for_path_in_metadata(path, cachedir):
continue
if not os.path.islink(path):
manifest = osgi.open_manifest(path)
@@ -51,7 +51,11 @@ class TagBuilder(object):
pinfo.printProvide()
+cachedir = None
if __name__ == "__main__":
+ global cachedir
+ if len(sys.argv) > 1:
+ cachedir = get_cachedir(sys.argv[1])
try:
builder = TagBuilder ()
except Exception:
diff --git a/depgenerators/osgi.req b/depgenerators/osgi.req
index 0bc0cda..2dbd04d 100755
--- a/depgenerators/osgi.req
+++ b/depgenerators/osgi.req
@@ -44,12 +44,11 @@ class TagBuilder(object):
filelist = sys.stdin
paths = [x.rstrip() for x in filelist.readlines()]
buildroot = config.get_buildroot()
- builddir = config.get_builddir()
# get all provided bundles
provided = []
try:
- cachefile = open(os.path.join(builddir, '.provided_bundles.cache'),
'r')
+ cachefile = open(os.path.join(cachedir, 'provided_bundles.cache'),
'r')
provided = pickle.load(cachefile)
cachefile.close()
except IOError:
@@ -61,13 +60,13 @@ class TagBuilder(object):
if not manifest:
continue
provided.append(osgi.OsgiProvideInfo.from_manifest(manifest))
- cachefile = open(os.path.join(builddir, '.provided_bundles.cache'),
'w')
+ cachefile = open(os.path.join(cachedir, 'provided_bundles.cache'),
'w')
pickle.dump(provided, cachefile)
cachefile.close()
# print requires
for path in paths:
- if osgi.look_for_path_in_metadata(path):
+ if osgi.look_for_path_in_metadata(path, cachedir):
continue
if not os.path.islink(path):
manifest = osgi.open_manifest(path)
@@ -98,7 +97,11 @@ def _check_path(path):
return False
+cachedir = None
if __name__ == "__main__":
+ global cachedir
+ if len(sys.argv) > 1:
+ cachedir = get_cachedir(sys.argv[1])
try:
builder = TagBuilder ()
except Exception:
diff --git a/macros.d/macros.fjava b/macros.d/macros.fjava
index 926c173..be5b9d6 100644
--- a/macros.d/macros.fjava
+++ b/macros.d/macros.fjava
@@ -50,7 +50,6 @@
%add_maven_depmap(f:a:v:) \
set -e \
-%{lua:
posix.setenv("JAVAPACKAGES_CACHE_DIR",rpm.expand("%{_builddir}") ) }
\
# default values \
%if %# == 0 \
_pompart="JPP-%{?scl:%{pkg_name}}%{!?scl:%{name}}.pom" \
diff --git a/macros.d/macros.xmvn b/macros.d/macros.xmvn
index 4dafa96..80158fe 100644
--- a/macros.d/macros.xmvn
+++ b/macros.d/macros.xmvn
@@ -141,7 +141,6 @@
# buildroot. It is intended to be placed in %install section of spec file.
#
%mvn_install(J:X) \
-%{lua:
posix.setenv("JAVAPACKAGES_CACHE_DIR",rpm.expand("%{_builddir}") ) }
\
xmvn-install %{?-X} -R .xmvn-reactor -n %{?scl:%{pkg_name}}%{!?scl:%{name}} -d
"%{buildroot}" \
jdir="%{-J*:%{-J*}}%{!-J*:target/site/apidocs}" \
if [ -d "${jdir}" ]; then \
diff --git a/python/javapackages/common/osgi.py b/python/javapackages/common/osgi.py
index 99147b8..de1c43f 100644
--- a/python/javapackages/common/osgi.py
+++ b/python/javapackages/common/osgi.py
@@ -141,13 +141,12 @@ def get_requires_from_manifest(manifest):
return reqs
-def look_for_path_in_metadata(path):
+def look_for_path_in_metadata(path, cachedir_path):
buildroot = config.get_buildroot()
- builddir = config.get_builddir()
artifacts = []
try:
- cachefile = open(os.path.join(builddir, '.provided_artifacts.cache'),
'r')
+ cachefile = open(os.path.join(cachedir_path, 'provided_artifacts.cache'),
'r')
artifacts = pickle.load(cachefile)
cachefile.close()
except IOError:
@@ -161,7 +160,7 @@ def look_for_path_in_metadata(path):
try:
mdata = Metadata(metadata_paths)
artifacts = mdata.get_provided_artifacts()
- cachefile = open(os.path.join(builddir, '.provided_artifacts.cache'),
'w')
+ cachefile = open(os.path.join(cachedir_path,
'provided_artifacts.cache'), 'w')
pickle.dump(artifacts, cachefile)
cachefile.close()
except MetadataInvalidException:
diff --git a/python/javapackages/common/util.py b/python/javapackages/common/util.py
index a1313ae..9ca33ae 100644
--- a/python/javapackages/common/util.py
+++ b/python/javapackages/common/util.py
@@ -37,3 +37,10 @@ import signal
def kill_parent():
os.kill(os.getppid(), signal.SIGTERM)
+
+
+def get_cachedir(path, create_if_not_exists=True):
+ cachedir_path = os.path.join(path, ".javapackages_cache")
+ if not os.path.exists(cachedir_path) and create_if_not_exists:
+ os.mkdir(cachedir_path)
+ return cachedir_path
diff --git a/test/maven_req_test.py b/test/maven_req_test.py
index 3a99d39..59d37fd 100644
--- a/test/maven_req_test.py
+++ b/test/maven_req_test.py
@@ -1,15 +1,14 @@
import unittest
-import os
+import shutil
from test_common import mavenreq
+
class TestMavenReq(unittest.TestCase):
def tearDown(self):
try:
- os.remove("/tmp/.provided_artifacts.cache")
- os.remove("/tmp/.provided_osgi.cache")
- os.remove("/tmp/.skipped_artifacts.cache")
+ shutil.rmtree("/tmp/.javapackages_cache/")
except OSError:
pass
diff --git a/test/test_common.py b/test/test_common.py
index f57ac51..ced07a5 100644
--- a/test/test_common.py
+++ b/test/test_common.py
@@ -114,7 +114,7 @@ def mavenprov(filelist):
scriptpath = path.join(DIRPATH, '..', 'depgenerators',
'maven.prov')
stdin = build_depmap_paths(filelist)
(stdout, stderr, return_value) = call_script(scriptpath,
- [], stdin=stdin, wrapped=True)
+ ["/tmp"], stdin=stdin, wrapped=True)
fun(self, stdout, stderr, return_value)
return test_decorated
return test_decorator
@@ -125,7 +125,7 @@ def osgiprov(filelist):
scriptpath = path.join(DIRPATH, '..', 'depgenerators',
'osgi.prov')
stdin = "\n".join(filelist)
(stdout, stderr, return_value) = call_script(scriptpath,
- [], stdin=stdin, wrapped=True,
extra_env={"RPM_BUILD_ROOT":"/dev/null",
+ ["/tmp"], stdin=stdin, wrapped=True,
extra_env={"RPM_BUILD_ROOT":"/dev/null",
"JAVAPACKAGES_CACHE_DIR":"/tmp"})
fun(self, stdout, stderr, return_value)
return test_decorated
@@ -136,7 +136,7 @@ def requires_generator(name, filelist, config=None,
javaconfdirs=None):
def test_decorated(self):
scriptpath = path.join(DIRPATH, '..', 'depgenerators', name)
stdin = build_depmap_paths(filelist)
- env = {"JAVAPACKAGES_CACHE_DIR":"/tmp"}
+ env = {}
if javaconfdirs:
confdirs = [os.path.join(DIRPATH, conf) for conf in javaconfdirs]
env['JAVACONFDIRS'] = os.pathsep.join(confdirs)
@@ -145,7 +145,7 @@ def requires_generator(name, filelist, config=None,
javaconfdirs=None):
else:
config_path = os.path.join(DIRPATH, '..', 'etc')
(stdout, stderr, return_value) = call_script(scriptpath,
- [], stdin=stdin, wrapped=True, extra_env=env,
+ ["/tmp"], stdin=stdin, wrapped=True, extra_env=env,
config_path=config_path)
fun(self, stdout, stderr, return_value)
return test_decorated