commit ab02ed613a2637e463d643c769e2f97233ec327d Author: Michal Srb msrb@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@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
java-sig-commits@lists.fedoraproject.org