[javapackages] [mvn_artifact] Attempt to SCL-ize call to xmvn-resolve
by Michal Srb
commit 89ca0fc764697c077ded57599c2b75ac59a71d8f
Author: Michal Srb <msrb(a)redhat.com>
Date: Thu Dec 4 18:05:11 2014 +0100
[mvn_artifact] Attempt to SCL-ize call to xmvn-resolve
java-utils/mvn_artifact.py | 14 ++++++++------
macros.d/macros.xmvn | 2 +-
2 files changed, 9 insertions(+), 7 deletions(-)
---
diff --git a/java-utils/mvn_artifact.py b/java-utils/mvn_artifact.py
index 78074f0..940a61d 100644
--- a/java-utils/mvn_artifact.py
+++ b/java-utils/mvn_artifact.py
@@ -49,7 +49,7 @@ import os
import traceback
import pyxb
import lxml.etree
-from optparse import OptionParser
+from optparse import OptionParser, SUPPRESS_HELP
usage="usage: %prog [options] <MVN spec | POM path> [artifact path]"
@@ -88,7 +88,7 @@ class UnknownVersion(Exception):
pass
-def get_parent_pom(pom):
+def get_parent_pom(pom, scl=None):
try:
metadata = Metadata(config)
known_artifacts = metadata.get_provided_artifacts()
@@ -103,7 +103,7 @@ def get_parent_pom(pom):
req = ResolutionRequest(pom.groupId, pom.artifactId,
extension="pom", version=pom.version)
- result = XMvnResolve.process_raw_request([req])[0]
+ result = XMvnResolve.process_raw_request([req], scl=scl)[0]
if not result:
raise Exception("Unable to resolve parent POM")
@@ -169,7 +169,7 @@ def expand_props(deps, props):
d.interpolate(props)
-def gather_dependencies(pom_path):
+def gather_dependencies(pom_path, scl=None):
if not pom_path:
return []
pom = POM(pom_path)
@@ -189,7 +189,7 @@ def gather_dependencies(pom_path):
except PomLoadingException:
pass
if not ppom:
- ppom = get_parent_pom(parent)
+ ppom = get_parent_pom(parent, scl=scl)
parent = ppom.parent
pom_props = get_model_variables(ppom)
@@ -246,6 +246,8 @@ if __name__ == "__main__":
help="skip dependencies section in resulting metadata")
parser.add_option("-D", action="append", type="str",
help="add artifact property", metavar="property=value")
+ parser.add_option("-n", "--namespace", type="str",
+ help=SUPPRESS_HELP, default=None)
sys.argv = args_to_unicode(sys.argv)
@@ -298,7 +300,7 @@ if __name__ == "__main__":
if (not options.skip_dependencies and pom_path
and not is_it_ivy_file(pom_path)):
deps = []
- mvn_deps = gather_dependencies(pom_path)
+ mvn_deps = gather_dependencies(pom_path, scl=options.namespace)
for d in mvn_deps:
deps.append(MetadataDependency.from_mvn_dependency(d))
if deps:
diff --git a/macros.d/macros.xmvn b/macros.d/macros.xmvn
index e7a6dda..1a587fb 100644
--- a/macros.d/macros.xmvn
+++ b/macros.d/macros.xmvn
@@ -118,7 +118,7 @@
#
# Usage: %mvn_artifact <pom> [<artifact-file>]
#
-%mvn_artifact %{pyinterpreter} %{javadir}-utils/mvn_artifact.py
+%mvn_artifact %{pyinterpreter} %{javadir}-utils/mvn_artifact.py %{?scl:-n %{?scl}}
# %mvn_build - build Maven project
9 years, 6 months
[javapackages] [maven.req] Properly SCL-ize all calls to xmvn-resolve
by Michal Srb
commit 362b675e4aa0d47990aafe004ab575de72fd0039
Author: Michal Srb <msrb(a)redhat.com>
Date: Thu Dec 4 17:44:40 2014 +0100
[maven.req] Properly SCL-ize all calls to xmvn-resolve
depgenerators/maven.req | 10 +++++-----
1 files changed, 5 insertions(+), 5 deletions(-)
---
diff --git a/depgenerators/maven.req b/depgenerators/maven.req
index 4ec0a4d..a2799f7 100755
--- a/depgenerators/maven.req
+++ b/depgenerators/maven.req
@@ -72,7 +72,7 @@ class TagBuilder(object):
# generate also R on plugins and extensions from POM file, but only
# if this is POM-only package and xmvn-resolve is installed
- if XMvnResolve.is_available():
+ if XMvnResolve.is_available(scl=rpmconf.scl):
if metadata.contains_only_poms():
self.print_pom_requires(metadata)
@@ -108,7 +108,7 @@ class TagBuilder(object):
unknown_deps = []
# check if dependencies on POM files are satisfiable
- if XMvnResolve.is_available():
+ if XMvnResolve.is_available(scl=rpmconf.scl):
unknown_deps = self._check_pom_deps()
for dependency in metadata.get_required_artifacts():
@@ -256,7 +256,7 @@ class TagBuilder(object):
version=dep.requestedVersion)
requests.append(request)
if requests:
- results = XMvnResolve.process_raw_request(requests, rpmconf.scl)
+ results = XMvnResolve.process_raw_request(requests, scl=rpmconf.scl)
for i, r in enumerate(results):
if not r:
unresolvable.append(deps[i])
@@ -285,7 +285,7 @@ class TagBuilder(object):
reqs = []
for d in deps:
reqs.append(ResolutionRequest(d.groupId, d.artifactId, version=d.version))
- results = XMvnResolve.process_raw_request(reqs, rpmconf.scl)
+ results = XMvnResolve.process_raw_request(reqs, scl=rpmconf.scl)
pom_requires = set()
for i, r in enumerate(results):
dep = MetadataDependency(deps[i].groupId, deps[i].artifactId,
@@ -313,7 +313,7 @@ class TagBuilder(object):
"because its parent POM {}:{} has unknown version".format(pgid, paid))
req = ResolutionRequest(pgid, paid, extension="pom")
- r = XMvnResolve.process_raw_request([req])[0]
+ r = XMvnResolve.process_raw_request([req], scl=rpmconf.scl)[0]
dep = MetadataDependency(pgid, paid, requestedVersion=pver, extension="pom")
dver = dep.is_provided_by(self.provided_artifacts)[1]
9 years, 6 months
[javapackages] [xmvn_resolve] Run in shell
by Michal Srb
commit 2942eef53835ae400ff022f4dccbdd6c09959aef
Author: Michal Srb <msrb(a)redhat.com>
Date: Thu Dec 4 17:42:54 2014 +0100
[xmvn_resolve] Run in shell
etc/javapackages-config.json | 3 ---
python/javapackages/xmvn/xmvn_resolve.py | 30 ++++++++++--------------------
2 files changed, 10 insertions(+), 23 deletions(-)
---
diff --git a/etc/javapackages-config.json b/etc/javapackages-config.json
index d373449..a1a770d 100644
--- a/etc/javapackages-config.json
+++ b/etc/javapackages-config.json
@@ -19,7 +19,4 @@
"jpackage-utils"
]
},
- "xmvn-resolve": {
- "path": "/usr/bin/xmvn-resolve"
- }
}
diff --git a/python/javapackages/xmvn/xmvn_resolve.py b/python/javapackages/xmvn/xmvn_resolve.py
index 52799ea..13a7537 100644
--- a/python/javapackages/xmvn/xmvn_resolve.py
+++ b/python/javapackages/xmvn/xmvn_resolve.py
@@ -31,44 +31,34 @@
# Authors: Michal Srb <msrb(a)redhat.com>
import lxml.etree
-import os
-from javapackages.common.config import get_configs
from javapackages.common.util import execute_command
class XMvnResolve(object):
# TODO:
# - documentation
+ tool = "xmvn-resolve"
@staticmethod
- def is_available():
- return os.path.exists(XMvnResolve._load_path_from_config())
+ def is_available(scl=None):
+ command = "type {tool}".format(tool=XMvnResolve.tool)
+ rc, _, _ = execute_command(command, shell=True, enable_scl=scl)
+ return True if not rc else False
@staticmethod
def process_raw_request(raw_request_list, scl=None):
- binpath = XMvnResolve._load_path_from_config()
request = XMvnResolve._join_raw_requests(raw_request_list)
- rc, stdout, stderr = execute_command(binpath, args=["--raw-request"],
- input=request, enable_scl=scl)
+ rc, stdout, stderr = execute_command(XMvnResolve.tool,
+ args=["--raw-request"],
+ shell=True,
+ input=request,
+ enable_scl=scl)
result = XMvnResolve._process_results(stdout)
return result
@staticmethod
- def _load_path_from_config():
- configs = get_configs()
- path = None
- for config in configs:
- path = config.get('path', "")
- if os.path.exists(path):
- break
- if not path:
- # default path
- path = "/usr/bin/xmvn-resolve"
- return path
-
- @staticmethod
def _join_raw_requests(raw_request_list):
request = "<requests>"
for r in raw_request_list:
9 years, 6 months
[javapackages] [osgi.req] Add comment on SCL double-check
by Michal Srb
commit e21ca307939f0f2428a30638a3df5f504d828d12
Author: Michal Srb <msrb(a)redhat.com>
Date: Thu Dec 4 17:25:02 2014 +0100
[osgi.req] Add comment on SCL double-check
depgenerators/osgi.req | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
---
diff --git a/depgenerators/osgi.req b/depgenerators/osgi.req
index d63560f..40ddc35 100755
--- a/depgenerators/osgi.req
+++ b/depgenerators/osgi.req
@@ -83,6 +83,8 @@ if __name__ == "__main__":
try:
rpmconf = init_rpmgen(sys.argv)
+ # this dependency generator should never run in SCL environment.
+ # but check it, just in case...
if rpmconf.scl:
raise Exception("{name} dependency generator doesn't support SCLs"
.format(name=os.path.basename(__file__)))
9 years, 6 months
[javapackages] Flush output before killing parent
by Mikolaj Izdebski
commit 40c305ecb5e5302f227768c038aaf1000efa5425
Author: Mikolaj Izdebski <mizdebsk(a)redhat.com>
Date: Thu Dec 4 17:16:24 2014 +0100
Flush output before killing parent
python/javapackages/common/util.py | 5 +++++
1 files changed, 5 insertions(+), 0 deletions(-)
---
diff --git a/python/javapackages/common/util.py b/python/javapackages/common/util.py
index fe68564..36c89d9 100644
--- a/python/javapackages/common/util.py
+++ b/python/javapackages/common/util.py
@@ -41,6 +41,11 @@ from optparse import OptionParser
def kill_parent_process():
+ # 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.
+ sys.stdout.flush()
+ 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)
9 years, 6 months
[javapackages] Disable osgi.req in SCL environments
by Mikolaj Izdebski
commit 1f7db66378dec5f36d01dbf01dc127044d842b64
Author: Mikolaj Izdebski <mizdebsk(a)redhat.com>
Date: Thu Dec 4 17:13:28 2014 +0100
Disable osgi.req in SCL environments
depgenerators/fileattrs/osgi.attr | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
---
diff --git a/depgenerators/fileattrs/osgi.attr b/depgenerators/fileattrs/osgi.attr
index cadb814..c50ae18 100644
--- a/depgenerators/fileattrs/osgi.attr
+++ b/depgenerators/fileattrs/osgi.attr
@@ -1,5 +1,7 @@
%__osgi_provides %{_rpmconfigdir}/osgi.prov
%__osgi_provides_opts --cachedir %{_builddir}/%{?buildsubdir} %{?scl:--scl %{?scl}}
+%{!?scl:
%__osgi_requires %{_rpmconfigdir}/osgi.req
%__osgi_requires_opts --cachedir %{_builddir}/%{?buildsubdir} %{?scl:--scl %{?scl}}
+}
%__osgi_path ^(.*\\.jar|((%{_prefix}/lib(64)?|%{_datadir})/.*/META-INF/MANIFEST.MF))$
9 years, 6 months
[tycho] Non-bootstrap build
by Mikolaj Izdebski
commit 7c5931e375de64c062c8c823400cffc255d6f514
Author: Mikolaj Izdebski <mizdebsk(a)redhat.com>
Date: Thu Dec 4 16:43:15 2014 +0100
Non-bootstrap build
tycho.spec | 7 +++++--
1 files changed, 5 insertions(+), 2 deletions(-)
---
diff --git a/tycho.spec b/tycho.spec
index 4c18643..25040e6 100644
--- a/tycho.spec
+++ b/tycho.spec
@@ -6,7 +6,7 @@
# This basically uses javac + xmvn to build only the Tycho components
# required to perform a full Tycho build
# Most common usage : A library (in Fedora) used by Tycho's runtime broke API
-%global tycho_bootstrap 1
+%global tycho_bootstrap 0
# Set 'eclipse_bootstrap' if Eclipse from buildroot cannot help build Tycho
# This basically provides a location for usage of pre-bundled Eclipse
# Possible uses : Need to build Tycho before Eclipse in fresh buildroot
@@ -23,7 +23,7 @@
Name: tycho
Version: 0.22.0
-Release: 2.1%{?dist}
+Release: 3%{?dist}
Summary: Plugins and extensions for building Eclipse plugins and OSGI bundles with Maven
Group: Development/Libraries
@@ -409,6 +409,9 @@ ln -s %{_javadir}/tycho/org.fedoraproject.p2.jar %{buildroot}%{_datadir}/xmvn/li
%{_javadocdir}/tycho
%changelog
+* Thu Dec 4 2014 Mikolaj Izdebski <mizdebsk(a)redhat.com> - 0.22.0-3
+- Non-bootstrap build
+
* Thu Dec 4 2014 Mikolaj Izdebski <mizdebsk(a)redhat.com> - 0.22.0-2.1
- fedoraproject-p2: Add support for installation into SCLs
- Bootstrap build
9 years, 6 months
[tycho] fedoraproject-p2: Add support for installation into SCLs
by Mikolaj Izdebski
commit 015fc6e1af923d62db5da6bf5dea34b37e8995bb
Author: Mikolaj Izdebski <mizdebsk(a)redhat.com>
Date: Thu Dec 4 16:23:54 2014 +0100
fedoraproject-p2: Add support for installation into SCLs
- Bootstrap build
sources | 2 +-
tycho-use-custom-resolver.patch | 44 +++++++++-----------------------------
tycho.spec | 10 ++++++--
3 files changed, 19 insertions(+), 37 deletions(-)
---
diff --git a/sources b/sources
index a390e80..a02b871 100644
--- a/sources
+++ b/sources
@@ -1,3 +1,3 @@
-3c1629e532861686aa3b01eb55b17575 fedoraproject-p2-9a996d.tar.xz
+ba9972227309c76bed00c6ea8feed61d fedoraproject-p2-723f1b.tar.xz
d7ee912e8da240c8d87892ed876960ae org.eclipse.tycho-tycho-0.22.0.tar.bz2
c600a5115f29962c974b75b4b25e74f1 eclipse-bootstrap.tar.xz
diff --git a/tycho-use-custom-resolver.patch b/tycho-use-custom-resolver.patch
index 738c954..e7f3c9d 100644
--- a/tycho-use-custom-resolver.patch
+++ b/tycho-use-custom-resolver.patch
@@ -1,4 +1,4 @@
-From a79c7771631f3bccbf5625c85ed99796b187ae9c Mon Sep 17 00:00:00 2001
+From e7e3560e189c22711de33ce662e2312a3c2dddcb Mon Sep 17 00:00:00 2001
From: Roland Grunberg <rgrunber(a)redhat.com>
Date: Tue, 12 Jun 2012 10:38:51 -0400
Subject: [PATCH] Implement a custom resolver for Tycho in local mode.
@@ -41,8 +41,8 @@ Change-Id: Ia1ece07ece2412bc4a88901631f3f651ad2b634b
.../tycho/core/osgitools/OsgiBundleProject.java | 5 ++-
.../DefaultTargetPlatformConfigurationReader.java | 6 ++-
tycho-p2/tycho-p2-facade/pom.xml | 5 +++
- .../tycho/p2/resolver/P2DependencyResolver.java | 23 +++++++++++
- 15 files changed, 222 insertions(+), 32 deletions(-)
+ .../tycho/p2/resolver/P2DependencyResolver.java | 8 ++++
+ 15 files changed, 207 insertions(+), 32 deletions(-)
diff --git a/sisu-equinox/sisu-equinox-embedder/src/main/java/org/eclipse/sisu/equinox/embedder/internal/DefaultEquinoxEmbedder.java b/sisu-equinox/sisu-equinox-embedder/src/main/java/org/eclipse/sisu/equinox/embedder/internal/DefaultEquinoxEmbedder.java
index ed01c2d..759f005 100644
@@ -343,10 +343,10 @@ index 22cca24..670f013 100644
// convenience method for tests
diff --git a/tycho-bundles/tycho-bundles-external/tycho-bundles-external.product b/tycho-bundles/tycho-bundles-external/tycho-bundles-external.product
-index 7c99168..28ad59f 100644
+index 76516e5..47d937c 100644
--- a/tycho-bundles/tycho-bundles-external/tycho-bundles-external.product
+++ b/tycho-bundles/tycho-bundles-external/tycho-bundles-external.product
-@@ -76,6 +76,7 @@
+@@ -77,6 +77,7 @@
<plugin id="org.eclipse.tycho.noopsecurity"/>
<plugin id="org.sat4j.core"/>
<plugin id="org.sat4j.pb"/>
@@ -402,7 +402,7 @@ index 86253bd..cef15d2 100644
throw new RuntimeException(e);
} catch (IOException e) {
diff --git a/tycho-core/src/main/java/org/eclipse/tycho/core/maven/TychoMavenLifecycleParticipant.java b/tycho-core/src/main/java/org/eclipse/tycho/core/maven/TychoMavenLifecycleParticipant.java
-index 1160f6c..acb2a1d 100644
+index b71b858..ef92336 100644
--- a/tycho-core/src/main/java/org/eclipse/tycho/core/maven/TychoMavenLifecycleParticipant.java
+++ b/tycho-core/src/main/java/org/eclipse/tycho/core/maven/TychoMavenLifecycleParticipant.java
@@ -29,6 +29,7 @@ import org.apache.maven.project.MavenProject;
@@ -544,18 +544,10 @@ index b567d50..34baa1a 100644
<build>
diff --git a/tycho-p2/tycho-p2-facade/src/main/java/org/eclipse/tycho/p2/resolver/P2DependencyResolver.java b/tycho-p2/tycho-p2-facade/src/main/java/org/eclipse/tycho/p2/resolver/P2DependencyResolver.java
-index ae2dc38..d7a76c1 100644
+index ae2dc38..a0c9969 100644
--- a/tycho-p2/tycho-p2-facade/src/main/java/org/eclipse/tycho/p2/resolver/P2DependencyResolver.java
+++ b/tycho-p2/tycho-p2-facade/src/main/java/org/eclipse/tycho/p2/resolver/P2DependencyResolver.java
-@@ -15,6 +15,7 @@ import java.net.MalformedURLException;
- import java.net.URI;
- import java.net.URISyntaxException;
- import java.net.URL;
-+import java.nio.file.Paths;
- import java.util.ArrayList;
- import java.util.Collection;
- import java.util.HashMap;
-@@ -86,6 +87,7 @@ import org.eclipse.tycho.p2.resolver.facade.P2ResolverFactory;
+@@ -86,6 +86,7 @@ import org.eclipse.tycho.p2.resolver.facade.P2ResolverFactory;
import org.eclipse.tycho.p2.target.facade.PomDependencyCollector;
import org.eclipse.tycho.p2.target.facade.TargetPlatformConfigurationStub;
import org.eclipse.tycho.repository.registry.facade.ReactorRepositoryManagerFacade;
@@ -563,28 +555,14 @@ index ae2dc38..d7a76c1 100644
@Component(role = DependencyResolver.class, hint = P2DependencyResolver.ROLE_HINT, instantiationStrategy = "per-lookup")
public class P2DependencyResolver extends AbstractLogEnabled implements DependencyResolver, Initializable {
-@@ -206,6 +208,27 @@ public class P2DependencyResolver extends AbstractLogEnabled implements Dependen
+@@ -206,6 +207,13 @@ public class P2DependencyResolver extends AbstractLogEnabled implements Dependen
pomDependencies.setProjectLocation(project.getBasedir());
}
+ // Add Fedora Local P2 Repository when running in local mode
+ if (System.getProperty("TYCHO_MVN_LOCAL") != null || System.getProperty("TYCHO_MVN_RPMBUILD") != null) {
-+
-+ Set<String> allLocations = new HashSet<String>();
-+ final Set<String> roots = EclipseSystemLayout.getSCLRoots();
-+ for (String root : roots) {
-+ EclipseSystemLayout.initLocations(Paths.get(root), allLocations, allLocations, allLocations, false);
-+ }
-+
-+ allLocations.addAll(EclipseSystemLayout.getUserDefinedBundleLocations());
-+
-+ for (String loc : allLocations) {
-+ String uri = "fedora:" + loc;
-+ try {
-+ tpConfiguration.addP2Repository(new MavenRepositoryLocation(uri, new URI(uri)));
-+ } catch (URISyntaxException e) {
-+ getLogger().warn("Unable to resolve repository URI : " + uri, e);
-+ }
++ for (URI uri : EclipseSystemLayout.getRepositories()) {
++ tpConfiguration.addP2Repository(new MavenRepositoryLocation(uri.getPath(), uri));
+ }
+ }
+
diff --git a/tycho.spec b/tycho.spec
index eb243b2..4c18643 100644
--- a/tycho.spec
+++ b/tycho.spec
@@ -6,7 +6,7 @@
# This basically uses javac + xmvn to build only the Tycho components
# required to perform a full Tycho build
# Most common usage : A library (in Fedora) used by Tycho's runtime broke API
-%global tycho_bootstrap 0
+%global tycho_bootstrap 1
# Set 'eclipse_bootstrap' if Eclipse from buildroot cannot help build Tycho
# This basically provides a location for usage of pre-bundled Eclipse
# Possible uses : Need to build Tycho before Eclipse in fresh buildroot
@@ -15,7 +15,7 @@
# %%global snap -SNAPSHOT
%global snap %{nil}
-%global fp_p2_sha 9a996d
+%global fp_p2_sha 723f1b
%global fp_p2_version 0.0.1
%global fp_p2_snap -SNAPSHOT
@@ -23,7 +23,7 @@
Name: tycho
Version: 0.22.0
-Release: 2%{?dist}
+Release: 2.1%{?dist}
Summary: Plugins and extensions for building Eclipse plugins and OSGI bundles with Maven
Group: Development/Libraries
@@ -409,6 +409,10 @@ ln -s %{_javadir}/tycho/org.fedoraproject.p2.jar %{buildroot}%{_datadir}/xmvn/li
%{_javadocdir}/tycho
%changelog
+* Thu Dec 4 2014 Mikolaj Izdebski <mizdebsk(a)redhat.com> - 0.22.0-2.1
+- fedoraproject-p2: Add support for installation into SCLs
+- Bootstrap build
+
* Thu Dec 04 2014 Mat Booth <mat.booth(a)redhat.com> - 0.22.0-2
- Fix osgi.jar symlink when in eclipse-bootstrap mode
- Remove no longer needed workaround for rhbz#1139180
9 years, 6 months
[javapackages] [xmvn_resolve] Raising exception on xmvn-resolve's non-zero return value is not a good idea
by Michal Srb
commit 89d6a8450687e86becdd95c0213a0184f67799a7
Author: Michal Srb <msrb(a)redhat.com>
Date: Thu Dec 4 16:29:56 2014 +0100
[xmvn_resolve] Raising exception on xmvn-resolve's non-zero return value is not a good idea
python/javapackages/xmvn/xmvn_resolve.py | 3 ---
1 files changed, 0 insertions(+), 3 deletions(-)
---
diff --git a/python/javapackages/xmvn/xmvn_resolve.py b/python/javapackages/xmvn/xmvn_resolve.py
index d387b0f..52799ea 100644
--- a/python/javapackages/xmvn/xmvn_resolve.py
+++ b/python/javapackages/xmvn/xmvn_resolve.py
@@ -52,9 +52,6 @@ class XMvnResolve(object):
rc, stdout, stderr = execute_command(binpath, args=["--raw-request"],
input=request, enable_scl=scl)
- if rc != 0:
- raise Exception(stderr)
-
result = XMvnResolve._process_results(stdout)
return result
9 years, 6 months