Update to upstream version 4.2.0

This commit is contained in:
Michal Srb 2014-09-09 09:23:57 +02:00
parent 3fac015197
commit ee8847f60a
16 changed files with 86 additions and 840 deletions

1
.gitignore vendored
View File

@ -61,3 +61,4 @@
/javapackages-3.5.0.tar.xz /javapackages-3.5.0.tar.xz
/javapackages-4.0.0.tar.xz /javapackages-4.0.0.tar.xz
/javapackages-4.1.0.tar.xz /javapackages-4.1.0.tar.xz
/javapackages-4.2.0.tar.xz

View File

@ -1,43 +0,0 @@
From 642f1828322489c6b5b0e450994a3d8a5836d56f Mon Sep 17 00:00:00 2001
From: Michal Srb <msrb@redhat.com>
Date: Tue, 10 Jun 2014 16:19:18 +0200
Subject: [PATCH] [artifact] Generate provides for compat artifacts with
alliases
---
python/javapackages/artifact.py | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/python/javapackages/artifact.py b/python/javapackages/artifact.py
index c6afc34..fc3f245 100644
--- a/python/javapackages/artifact.py
+++ b/python/javapackages/artifact.py
@@ -108,19 +108,21 @@ class ProvidedArtifact(object):
strlist = []
if not self.compatVersions:
strlist.append(self.artifact.get_rpm_str())
+ for alias in self.aliases:
+ full_alias = Artifact.merge_artifacts(alias.artifact, self.artifact)
+ strlist.append(full_alias.get_rpm_str())
else:
for ver in self.compatVersions:
rpmstr = self.artifact.get_rpm_str(ver)
strlist.append(rpmstr)
+ for alias in self.aliases:
+ full_alias = Artifact.merge_artifacts(alias.artifact, self.artifact)
+ strlist.append(full_alias.get_rpm_str(ver))
if not (self.version):
raise ArtifactFormatException(
"Cannot create versioned string from artifact without version: {art}".format(art=str(self)))
- for alias in self.aliases:
- full_alias = Artifact.merge_artifacts(alias.artifact, self.artifact)
- strlist.append(full_alias.get_rpm_str())
-
result = ""
for rpmstr in strlist:
if result:
--
1.9.3

View File

@ -1,26 +0,0 @@
From 9b45dfe3a03e70c1413b7a1a7ee88431a4fe7f4c Mon Sep 17 00:00:00 2001
From: Michal Srb <msrb@redhat.com>
Date: Thu, 10 Jul 2014 15:30:17 +0200
Subject: [PATCH] [maven.req] XMvn sets resolvedVersion to UNKNOWN for
unresolvable deps
---
depgenerators/maven.req | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/depgenerators/maven.req b/depgenerators/maven.req
index 2e99c1e..f7133d6 100755
--- a/depgenerators/maven.req
+++ b/depgenerators/maven.req
@@ -310,7 +310,7 @@ class TagBuilder(object):
unknown_deps = self.check_deps(metadata)
for dependency in metadata.get_required_artifacts():
- if dependency.requestedVersion == "UNKNOWN":
+ if dependency.resolvedVersion == "UNKNOWN":
unknown_deps.append(dependency)
continue
for skipped in self.skipped_artifacts:
--
1.9.3

View File

@ -1,34 +0,0 @@
From 0870cac2b02aef1e75aada3b4d235f76b0d4ee1e Mon Sep 17 00:00:00 2001
From: Michal Srb <msrb@redhat.com>
Date: Thu, 29 May 2014 10:23:07 +0200
Subject: [PATCH 01/10] [pom] Add ability to read parent's version
---
python/javapackages/pom.py | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/python/javapackages/pom.py b/python/javapackages/pom.py
index 604728f..6c15813 100644
--- a/python/javapackages/pom.py
+++ b/python/javapackages/pom.py
@@ -95,6 +95,17 @@ class POM(object):
return gId.text.strip()
@property
+ def parentVersion(self):
+ """
+ version of the parent artifact of None
+ """
+ ver = self.__find('./pom:parent/pom:version')
+ if ver is None:
+ return None
+ else:
+ return ver.text.strip()
+
+ @property
def groupId(self):
"""
Effective groupId of the pom Artifact taking into account parent groupId
--
1.9.3

View File

@ -1,75 +0,0 @@
From 5224614066cfd01c02112a849fca3c7969202142 Mon Sep 17 00:00:00 2001
From: Michal Srb <msrb@redhat.com>
Date: Thu, 29 May 2014 10:24:39 +0200
Subject: [PATCH 02/10] [maven.req] Check if dependency is not provided by
subpackage
---
depgenerators/maven.req | 24 +++++++++++++++++-------
1 file changed, 17 insertions(+), 7 deletions(-)
diff --git a/depgenerators/maven.req b/depgenerators/maven.req
index c81437b..eecb055 100755
--- a/depgenerators/maven.req
+++ b/depgenerators/maven.req
@@ -144,6 +144,15 @@ class TagBuilder(object):
continue
self.print_mvn_requires(path)
+ def __is_provided_by_subpackage(self, dependency):
+ for provided in self.provided_artifacts:
+ if (provided.groupId == dependency.groupId and
+ provided.artifactId == dependency.artifactId and
+ provided.classifier == dependency.classifier and
+ provided.extension == dependency.extension):
+ return True
+ return False
+
def __generate_requires_from_pom(self, pomfile):
pom = POM(pomfile)
@@ -151,6 +160,7 @@ class TagBuilder(object):
extensions = pom.get_extensions()
pgid = pom.parentGroupId
paid = pom.parentArtifactId
+ pver = pom.parentVersion
unresolvable = []
@@ -158,7 +168,7 @@ class TagBuilder(object):
for p in plugins:
# TODO: namespaces
plug = Dependency(p.groupId, p.artifactId, requestedVersion=p.version)
- if resolve_artifact(plug.get_mvn_str()):
+ if resolve_artifact(plug.get_mvn_str()) or self.__is_provided_by_subpackage(plug):
print(plug.get_rpm_str())
else:
unresolvable.append(plug.get_mvn_str())
@@ -173,18 +183,18 @@ class TagBuilder(object):
for e in extensions:
# TODO: namespaces
ext = Dependency(e.groupId, e.artifactId, requestedVersion=e.version)
- if resolve_artifact(ext.get_mvn_str()):
+ if resolve_artifact(ext.get_mvn_str()) or self.__is_provided_by_subpackage(ext):
print(ext.get_rpm_str())
else:
unresolvable.append(plug.get_mvn_str())
- if paid:
- parent_mvn_str = "{}:{}:pom:".format(pgid, paid)
- if resolve_artifact(parent_mvn_str):
+ if paid and pver:
+ parent_dep = Dependency(pgid, paid, requestedVersion=pver, extension="pom")
+ if resolve_artifact(parent_dep.get_mvn_str()) or self.__is_provided_by_subpackage(parent_dep):
# TODO: namespaces
- print("mvn({})".format(parent_mvn_str))
+ print(parent_dep.get_rpm_str())
else:
- unresolvable.append(parent_mvn_str)
+ unresolvable.append(parent_dep.get_mvn_str())
if unresolvable:
raise Exception("Unable to generate requires on unresolvable artifact{}: {}"
--
1.9.3

View File

@ -1,65 +0,0 @@
From 8cd3338ddfeef5965f05d5082695d9d72bcf4629 Mon Sep 17 00:00:00 2001
From: Michal Srb <msrb@redhat.com>
Date: Thu, 29 May 2014 11:28:57 +0200
Subject: [PATCH 04/10] [maven.req] Generate versioned deps on subpackages
---
depgenerators/maven.req | 19 ++++++++++++++-----
1 file changed, 14 insertions(+), 5 deletions(-)
diff --git a/depgenerators/maven.req b/depgenerators/maven.req
index eecb055..56fd27f 100755
--- a/depgenerators/maven.req
+++ b/depgenerators/maven.req
@@ -150,8 +150,8 @@ class TagBuilder(object):
provided.artifactId == dependency.artifactId and
provided.classifier == dependency.classifier and
provided.extension == dependency.extension):
- return True
- return False
+ return provided.version
+ return None
def __generate_requires_from_pom(self, pomfile):
@@ -168,8 +168,11 @@ class TagBuilder(object):
for p in plugins:
# TODO: namespaces
plug = Dependency(p.groupId, p.artifactId, requestedVersion=p.version)
- if resolve_artifact(plug.get_mvn_str()) or self.__is_provided_by_subpackage(plug):
+ aver = self.__is_provided_by_subpackage(plug)
+ if resolve_artifact(plug.get_mvn_str()):
print(plug.get_rpm_str())
+ elif aver is not None:
+ print("{rpmstr} = {version}".format(rpmstr=plug.get_rpm_str(), version=aver))
else:
unresolvable.append(plug.get_mvn_str())
for pd in p.dependencies:
@@ -183,16 +186,22 @@ class TagBuilder(object):
for e in extensions:
# TODO: namespaces
ext = Dependency(e.groupId, e.artifactId, requestedVersion=e.version)
- if resolve_artifact(ext.get_mvn_str()) or self.__is_provided_by_subpackage(ext):
+ aver = self.__is_provided_by_subpackage(ext)
+ if resolve_artifact(ext.get_mvn_str()):
print(ext.get_rpm_str())
+ elif aver is not None:
+ print("{rpmstr} = {version}".format(rpmstr=ext.get_rpm_str(), version=aver))
else:
unresolvable.append(plug.get_mvn_str())
if paid and pver:
parent_dep = Dependency(pgid, paid, requestedVersion=pver, extension="pom")
- if resolve_artifact(parent_dep.get_mvn_str()) or self.__is_provided_by_subpackage(parent_dep):
+ aver = self.__is_provided_by_subpackage(parent_dep)
+ if resolve_artifact(parent_dep.get_mvn_str()):
# TODO: namespaces
print(parent_dep.get_rpm_str())
+ elif aver is not None:
+ print("{rpmstr} = {version}".format(rpmstr=parent_dep.get_rpm_str(), version=aver))
else:
unresolvable.append(parent_dep.get_mvn_str())
--
1.9.3

View File

@ -1,31 +0,0 @@
From 424bba5b517fa1c458d7f11b10e577ba59585bd2 Mon Sep 17 00:00:00 2001
From: Mikolaj Izdebski <mizdebsk@redhat.com>
Date: Thu, 29 May 2014 13:08:11 +0200
Subject: [PATCH 06/10] [maven.req] Fix self-dependency detection code
---
depgenerators/maven.req | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/depgenerators/maven.req b/depgenerators/maven.req
index 56fd27f..a42162e 100755
--- a/depgenerators/maven.req
+++ b/depgenerators/maven.req
@@ -242,13 +242,10 @@ class TagBuilder(object):
for compatVer in provided.compatVersions:
if dependency.resolvedVersion == compatVer:
return True
- else:
- return False
elif (not dependency.resolvedVersion and
not provided.is_compat()):
return True
- else:
- return False
+ return False
def filter_requires(self, requires):
--
1.9.3

View File

@ -1,26 +0,0 @@
From a48fe9f51512fe367d44519e41c94b24ef8af983 Mon Sep 17 00:00:00 2001
From: Mikolaj Izdebski <mizdebsk@redhat.com>
Date: Thu, 29 May 2014 13:38:56 +0200
Subject: [PATCH 08/10] Fix javapackages-metadata.xml
s/com.jdk:jconsole/sun.jdk:jconsole/
---
etc/javapackages-metadata.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/etc/javapackages-metadata.xml b/etc/javapackages-metadata.xml
index 6f6c98e..1126a69 100644
--- a/etc/javapackages-metadata.xml
+++ b/etc/javapackages-metadata.xml
@@ -9,7 +9,7 @@
<path>${JAVA_HOME}/../lib/tools.jar</path>
</artifact>
<artifact>
- <groupId>com.jdk</groupId>
+ <groupId>sun.jdk</groupId>
<artifactId>jconsole</artifactId>
<version>SYSTEM</version>
<path>${JAVA_HOME}/../lib/jconsole.jar</path>
--
1.9.3

View File

@ -1,55 +0,0 @@
From 52525455278ad5801cf89a768b81499229af1f68 Mon Sep 17 00:00:00 2001
From: Michal Srb <msrb@redhat.com>
Date: Thu, 29 May 2014 13:45:52 +0200
Subject: [PATCH 10/10] [maven.req] When generating req from POM file, do not
blindly take first POM file, but iterate over all of them and pick the right
one
---
depgenerators/maven.req | 23 ++++++++++++++++++++---
1 file changed, 20 insertions(+), 3 deletions(-)
diff --git a/depgenerators/maven.req b/depgenerators/maven.req
index aea1dd4..dea89d7 100755
--- a/depgenerators/maven.req
+++ b/depgenerators/maven.req
@@ -137,7 +137,9 @@ class TagBuilder(object):
if os.path.exists(XMVN_RESOLVE_PATH):
if is_it_pom_only_pkg(paths[0]):
- self.__generate_requires_from_pom(ppaths[0])
+ poms = self.__find_poms_for_metadata(ppaths, paths[0])
+ for p in poms:
+ self.__generate_requires_from_pom(p)
for path in paths:
if path.endswith(".pom"):
@@ -154,8 +156,23 @@ class TagBuilder(object):
return None
- def __generate_requires_from_pom(self, pomfile):
- pom = POM(pomfile)
+ # TODO: move functions like this to some POMUtils, or similar module
+ def __find_poms_for_metadata(self, pom_paths, metadata_path):
+ poms = []
+ depmap = Depmap([metadata_path])
+ provided = depmap.get_provided_artifacts()
+ for prov in provided:
+ for p in pom_paths:
+ pom = POM(p)
+ if (pom.groupId == prov.groupId and
+ pom.artifactId == prov.artifactId and
+ pom.version == prov.version):
+
+ poms.append(pom)
+ break
+ return poms
+
+ def __generate_requires_from_pom(self, pom):
plugins = pom.get_plugins()
extensions = pom.get_extensions()
pgid = pom.parentGroupId
--
1.9.3

View File

@ -1,112 +0,0 @@
diff --git a/java-utils/maven_depmap.py b/java-utils/maven_depmap.py
index 9377725..c80ff5b 100644
--- a/java-utils/maven_depmap.py
+++ b/java-utils/maven_depmap.py
@@ -280,6 +280,7 @@ if __name__ == "__main__":
if namespace:
artifact.namespace = namespace
+ artifact.properties["xmvn.resolver.disableEffectivePom"] = "true"
buildroot = os.environ.get('RPM_BUILD_ROOT')
diff --git a/java-utils/mvn_artifact.py b/java-utils/mvn_artifact.py
index e5e2731..9c0d55a 100644
--- a/java-utils/mvn_artifact.py
+++ b/java-utils/mvn_artifact.py
@@ -45,8 +45,6 @@ from javapackages.pom import *
from lxml import etree
import pyxb
-from xml.dom.minidom import getDOMImplementation
-
usage="usage: %prog [options] <MVN spec | POM path> [artifact path]"
epilog="""
@@ -117,21 +115,17 @@ def add_artifact_elements(root, uart, ppath=None, jpath=None):
for path in [ppath, jpath]:
if path:
a = uart.to_metadata()
+ props = []
if path is ppath:
if not is_it_ivy_file(ppath):
a.extension = "pom"
else:
a.extension = os.path.splitext(pom_path)[1][1:]
-
- # add property "type"
- domimpl = getDOMImplementation()
- doc = domimpl.createDocument(None, None, None)
- ty = doc.createElement('type')
- te = doc.createTextNode('ivy')
- ty.appendChild(te)
- a.properties = pyxb.BIND(ty)
+ props.append(Depmap.build_property('type', 'ivy'))
a.path = os.path.abspath(path)
+ props.append(Depmap.build_property('xmvn.resolver.disableEffectivePom', 'true'))
+ a.properties = pyxb.BIND(*props)
artifacts.append(a)
if root.artifacts is None:
diff --git a/python/javapackages/artifact.py b/python/javapackages/artifact.py
index ed8e0ba..33d1583 100644
--- a/python/javapackages/artifact.py
+++ b/python/javapackages/artifact.py
@@ -130,7 +130,6 @@ class ProvidedArtifact(object):
return result
def to_metadata(self):
- # TODO: add support for properties(?)
a = m.ArtifactMetadata()
a.groupId = self.groupId
a.artifactId = self.artifactId
@@ -149,6 +148,11 @@ class ProvidedArtifact(object):
als = [alias.to_metadata() for alias in self.aliases]
a.aliases = pyxb.BIND(*als)
+ if self.properties:
+ import javapackages.depmap
+ prop = [javapackages.depmap.Depmap.build_property(k, v) for k, v in self.properties.iteritems()]
+ a.properties = pyxb.BIND(*prop)
+
return a
@classmethod
diff --git a/python/javapackages/depmap.py b/python/javapackages/depmap.py
index 356af95..a4b83fb 100644
--- a/python/javapackages/depmap.py
+++ b/python/javapackages/depmap.py
@@ -41,6 +41,7 @@ from javapackages.artifact import (Artifact, Dependency, ProvidedArtifact,
import pyxb
import javapackages.metadata as metadata
+from xml.dom.minidom import getDOMImplementation
class MetadataLoadingException(Exception):
@@ -170,3 +171,12 @@ class Depmap(object):
if prop.tagName == u'requiresJavaDevel':
return prop.firstChild.value
return None
+
+ @staticmethod
+ def build_property(name, value):
+ domimpl = getDOMImplementation()
+ doc = domimpl.createDocument(None, None, None)
+ elem = doc.createElement(name)
+ tnode = doc.createTextNode(value)
+ elem.appendChild(tnode)
+ return elem
diff --git a/test/run_tests.sh b/test/run_tests.sh
index 55d47cd..8bdc221 100755
--- a/test/run_tests.sh
+++ b/test/run_tests.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-PYTHONPATH="../python" nosetests --with-xunit --exclude=maven_prov_test_fuzzed.py
+PYTHONPATH="../python" nosetests --with-xunit --exclude="(maven_prov)|(maven_depmap)|(mvn_artifact)_test.py"
r1=$?
r2=0

View File

@ -1,58 +0,0 @@
#!/bin/bash -ex
resultdir="/var/lib/mock/javapackages-rawhide/result/"
# create directories
repo=RPM/latest/
[[ ! -d ${repo} ]] && mkdir -p ${repo}
# update version and release tag in spec file
version=`sed 's/-SNAPSHOT//' VERSION`
release=$(git describe --match="[^(jenkins)].*" --tags | sed 's/[^-]*-/0./;s/-/./;s/g/git/')
sed -i "s/^Version:\s\+[0-9.]*$/Version: ${version}/" javapackages-tools.spec
sed -i "s/^Release:\s\+[0-9.]*%{?dist}$/Release: ${release}/" javapackages-tools.spec
# make tarball
git archive -v --prefix=javapackages-${version}/ HEAD | xz > javapackages-${version}.tar.xz
# print root.log and build.log in case of failure
trap "cat ${resultdir}/root.log | tail -30; cat ${resultdir}/build.log || :" 0
# crate srpm
rm -f SRPMS/*
rpmbuild -bs --clean --define "_topdir `pwd`" --define "_sourcedir `pwd`" javapackages-tools.spec
# build RPM with custom mock config
rm -Rf ${resultdir}/*
mock -r ../..$PWD/fedora-rawhide-x86_64 SRPMS/*.src.rpm
# get nosetests results
mock -r ../..$PWD/fedora-rawhide-x86_64 --copyout /builddir/build/BUILD/javapackages-${version}/test/nosetests.xml .
# remove unneeded stuff
rm -f javapackages-*.tar.xz
last_bn=`grep "Build number" ${repo}/info.log | awk '{ print $3 }'`
if [ -n "${last_bn}" ]; then
mkdir -p RPM/${last_bn}
mv ${repo}/* RPM/${last_bn}
# we only want keep RPMs from last 10 builds
blist=`find ./RPM/ -maxdepth 1 -name "[0-9]*"`
for bn in $blist; do
if [ `basename $bn` -lt `expr $last_bn - 10` ]; then
rm -Rf $bn
fi
done
fi
# copy resulting RPMs to RPM/latest
cp ${resultdir}/* ${repo}
tail -n 50 ${resultdir}/build.log
createrepo ${repo}
# store current build number into the file
echo "Build number: $BUILD_NUMBER" >> ${repo}/info.log

View File

@ -1,37 +0,0 @@
config_opts['root'] = 'javapackages-rawhide'
config_opts['target_arch'] = 'x86_64'
config_opts['legal_host_arches'] = ('x86_64',)
config_opts['chroot_setup_cmd'] = 'install @buildsys-build PyXB asciidoc dia python-formencode python-lxml python-nose python-setuptools python2-devel scl-utils-build xmlto'
config_opts['dist'] = 'rawhide' # only useful for --resultdir variable subst
config_opts['extra_chroot_dirs'] = [ '/run/lock', ]
config_opts['releasever'] = '21'
config_opts['yum.conf'] = """
[main]
logfile=/var/log/yum.log
retries=20
gpgcheck=0
assumeyes=1
syslog_ident=mock
syslog_device=
metadata_expire=1
mirrorlist_expire=1
debuglevel=2
[mock-rawhide]
name=mock-rawhide
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=rawhide&arch=x86_64
failovermethod=priority
cost=1000
[mock-koji]
name=mock-koji
baseurl=http://kojipkgs.fedoraproject.org/repos/rawhide/latest/x86_64/
cost=2000
[mock-override]
name=mock-override
baseurl=http://people.redhat.com/~mizdebsk/jenkins-extra-repo/
gpgcheck=0
cost=500
"""

View File

@ -1,24 +0,0 @@
diff --git a/install b/install
index 6caf88f..16216a7 100755
--- a/install
+++ b/install
@@ -142,6 +142,7 @@ inst_data target/pom_disable_module.7 "${mandir}/man7"
inst_data target/pom_remove_dep.7 "${mandir}/man7"
inst_data target/pom_remove_parent.7 "${mandir}/man7"
inst_data target/pom_remove_plugin.7 "${mandir}/man7"
+inst_data target/pom_change_dep.7 "${mandir}/man7"
inst_data target/pom_set_parent.7 "${mandir}/man7"
inst_data target/pom_xpath_inject.7 "${mandir}/man7"
inst_data target/pom_xpath_remove.7 "${mandir}/man7"
diff --git a/man/pom_change_dep.txt b/man/pom_change_dep.txt
index 234853f..3871641 100644
--- a/man/pom_change_dep.txt
+++ b/man/pom_change_dep.txt
@@ -1,5 +1,5 @@
-pom_add_dep(7)
-==============
+pom_change_dep(7)
+=================
:doctype: manpage
:man source: JAVAPACKAGES
:man manual: Java Packages Tools

View File

@ -1,39 +1,61 @@
%if 0%{?fedora} > 12
%global with_python3 1
%else
%{!?__python2: %global __python2 /usr/bin/python2}
%{!?python2_sitelib: %global python2_sitelib %(%{__python2} -c "from distutils.sysconfig import get_python_lib; print (get_python_lib())")}
%endif
Name: javapackages-tools Name: javapackages-tools
Version: 4.1.0 Version: 4.2.0
Release: 2%{?dist} Release: 1%{?dist}
Summary: Macros and scripts for Java packaging support Summary: Macros and scripts for Java packaging support
License: BSD License: BSD
URL: https://fedorahosted.org/javapackages/ URL: https://git.fedorahosted.org/git/javapackages.git
Source0: https://fedorahosted.org/released/javapackages/javapackages-%{version}.tar.xz Source0: https://fedorahosted.org/released/javapackages/javapackages-%{version}.tar.xz
Patch0: 0001-maven.req-XMvn-sets-resolvedVersion-to-UNKNOWN-for-u.patch
BuildArch: noarch BuildArch: noarch
%if 0%{?with_python3}
BuildRequires: python3-devel
BuildRequires: python3-lxml
BuildRequires: python3-setuptools
BuildRequires: python3-nose
BuildRequires: python3-six
BuildRequires: python3-PyXB = 1.2.4
%else
BuildRequires: python2-devel
BuildRequires: python-lxml
BuildRequires: python-setuptools
BuildRequires: python-nose
BuildRequires: python-six
BuildRequires: PyXB = 1.2.4
%endif
BuildRequires: asciidoc BuildRequires: asciidoc
BuildRequires: xmlto BuildRequires: xmlto
BuildRequires: python-lxml
BuildRequires: python2-devel
BuildRequires: python-setuptools
BuildRequires: python-formencode
BuildRequires: scl-utils-build BuildRequires: scl-utils-build
BuildRequires: python-nose
BuildRequires: dia BuildRequires: dia
BuildRequires: PyXB >= 1.2.3
BuildRequires: javapackages-tools >= 4.0.0 BuildRequires: javapackages-tools >= 4.0.0
BuildRequires: xmvn-resolve >= 2.0.0 BuildRequires: xmvn-resolve >= 2
Requires: coreutils Requires: coreutils
Requires: libxslt Requires: libxslt
Requires: lua Requires: lua
Requires: python %if 0%{?with_python3}
Requires: python3-javapackages = %{version}-%{release}
Requires: python3
%else
Requires: python-javapackages = %{version}-%{release} Requires: python-javapackages = %{version}-%{release}
Requires: python
%endif
Provides: jpackage-utils = %{version}-%{release} Provides: jpackage-utils = %{version}-%{release}
Obsoletes: jpackage-utils < %{version}-%{release} Obsoletes: jpackage-utils < %{version}-%{release}
Provides: mvn(com.sun:tools)
Provides: mvn(sun.jdk:jconsole)
%description %description
This package provides macros and scripts to support Java packaging. This package provides macros and scripts to support Java packaging.
@ -90,14 +112,31 @@ Requires: xmvn-connector-ivy >= 2
This package implements local mode fow Apache Ivy, which allows This package implements local mode fow Apache Ivy, which allows
artifact resolution using XMvn resolver. artifact resolution using XMvn resolver.
%if 0%{?with_python3}
%package -n python3-javapackages
Summary: Module for handling various files for Java packaging
Requires: python3-PyXB = 1.2.4
Requires: python3-lxml
Requires: python3-six
Obsoletes: python-javapackages < %{version}-%{release}
%description -n python3-javapackages
Module for handling, querying and manipulating of various files for Java
packaging in Linux distributions
%else # python2
%package -n python-javapackages %package -n python-javapackages
Summary: Module for handling various files for Java packaging Summary: Module for handling various files for Java packaging
Requires: PyXB >= 1.2.3 Requires: PyXB = 1.2.4
Requires: python-lxml Requires: python-lxml
Requires: python-six
Obsoletes: python3-javapackages < %{version}-%{release}
%description -n python-javapackages %description -n python-javapackages
Module for handling, querying and manipulating of various files for Java Module for handling, querying and manipulating of various files for Java
packaging in Linux distributions packaging in Linux distributions
%endif
%package -n fedora-review-plugin-java %package -n fedora-review-plugin-java
Summary: fedora-review plugin for checking Java packaging guidelines Summary: fedora-review plugin for checking Java packaging guidelines
@ -119,13 +158,6 @@ Requires: %{name} = %{version}-%{release}
Requires: xmvn-install >= 2 Requires: xmvn-install >= 2
Requires: xmvn-subst >= 2 Requires: xmvn-subst >= 2
Requires: xmvn-resolve >= 2 Requires: xmvn-resolve >= 2
# We want to use OpenJDK 8 for building packages as it is default
# implementation used in Fedora. Due to YUM bugs and limitations,
# sometimes Java 7 may be installed alone. To workaround this
# maven-local explicitly requires version 8 of OpenJDK. (If needed
# Maven can still work with Java 7, but this needs to be enabled
# explicitly in the spec file.)
Requires: java-1.8.0-openjdk-devel >= 1:1.8
%description -n javapackages-local %description -n javapackages-local
This package provides non-essential macros and scripts to support Java packaging. This package provides non-essential macros and scripts to support Java packaging.
@ -133,13 +165,23 @@ This package provides non-essential macros and scripts to support Java packaging
%prep %prep
%setup -q -n javapackages-%{version} %setup -q -n javapackages-%{version}
%patch0 -p1 %if 0%{?with_python3}
find . -name '*.py' | xargs sed -i '1s|^#!.*python|#!%{__python3}|'
find ./depgenerators -name '*.req' | xargs sed -i '1s|^#!.*python|#!%{__python3}|'
find ./depgenerators -name '*.prov' | xargs sed -i '1s|^#!.*python|#!%{__python3}|'
%endif # with_python3
%build %build
%configure %configure
./build ./build
pushd python pushd python
%{__python} setup.py build %if 0%{?with_python3}
%{__python3} setup.py build
%else
%{__python2} setup.py build
%endif
popd popd
%install %install
@ -147,12 +189,19 @@ popd
sed -e 's/.[17]$/&.gz/' -e 's/.py$/&*/' -i files-* sed -e 's/.[17]$/&.gz/' -e 's/.py$/&*/' -i files-*
pushd python pushd python
%{__python} setup.py install --skip-build --root $RPM_BUILD_ROOT %if 0%{?with_python3}
%{__python3} setup.py install -O1 --skip-build --root %{buildroot}
%else
%{__python} setup.py install -O1 --skip-build --root %{buildroot}
%endif
popd popd
%check %check
./check %if 0%{?with_python3}
./check 3
%else
./check 2
%endif
%files -f files-common %files -f files-common
%doc LICENSE %doc LICENSE
@ -163,9 +212,15 @@ popd
%files -n ivy-local -f files-ivy %files -n ivy-local -f files-ivy
%if 0%{?with_python3}
%files -n python3-javapackages
%doc LICENSE
%{python3_sitelib}/javapackages*
%else # python2
%files -n python-javapackages %files -n python-javapackages
%doc LICENSE %doc LICENSE
%{python_sitelib}/javapackages* %{python_sitelib}/javapackages*
%endif
%files -n fedora-review-plugin-java %files -n fedora-review-plugin-java
%{_datadir}/fedora-review/plugins/* %{_datadir}/fedora-review/plugins/*
@ -174,6 +229,9 @@ popd
%doc LICENSE %doc LICENSE
%changelog %changelog
* Thu Jul 24 2014 Michal Srb <msrb@redhat.com> - 4.2.0-1
- Update to upstream version 4.2.0
* Thu Jul 10 2014 Michal Srb <msrb@redhat.com> - 4.1.0-2 * Thu Jul 10 2014 Michal Srb <msrb@redhat.com> - 4.1.0-2
- Backport upstream patch for maven.req - Backport upstream patch for maven.req

View File

@ -1 +1 @@
90858a73cb6ba12b19c6a7d70a4c2cdf javapackages-4.1.0.tar.xz 69b79deca82c70af3f7aa5356abc5866 javapackages-4.2.0.tar.xz

View File

@ -1,227 +0,0 @@
diff --git a/doc/ant.txt b/doc/ant.txt
index 06ba3f3..fc500c3 100644
--- a/doc/ant.txt
+++ b/doc/ant.txt
@@ -22,7 +22,7 @@ Repository for it, ship it as another source and install it.
[source,spec]
-------------
BuildRequires: ant
-BuildRequires: maven-local
+BuildRequires: javapackages-local
...
%build
ant test
diff --git a/doc/core_java_packages.txt b/doc/core_java_packages.txt
index 34e0728..2baf4b2 100644
--- a/doc/core_java_packages.txt
+++ b/doc/core_java_packages.txt
@@ -51,9 +51,39 @@ non-zero epoch in order to keep version ordering correct.
=======
+==== Java Packages Tools
+
+Java Packages Tools are packaged as severas binary RPM packages
+
+*`maven-local`*::
+
+ This package provides a complete environment which is required to
+ build Java packages using Apache Maven build system. This
+ includes a default system version of Java Development Kit (JDK),
+ Maven, a number of Maven plugins commonly used to build packages,
+ various macros and utlilty tools. `maven-local` is usually
+ declared as build dependency of Maven packages.
+
+*`ivy-local`*::
+
+ Analogously to `maven-local`, this package provides an environment
+ required to build Java packages using Apache Ivy as dependency
+ manager.
+
+*`javapackages-local`*::
+
+ Package providing a basic environment necessary to geterate and
+ install metadata for system artifact repository.
+
+*`javapackages-tools`*::
+
+ Package owning basic Java directories and providing runtime
+ support for Java packages. The great majority of Java packages
+ depend on `javapackages-tools`.
+
+
TODO
-* Java Packages Tools
* Ant
** extra tasks and /etc/ant.d
* Maven
diff --git a/doc/directory_layout.txt b/doc/directory_layout.txt
index 862ccd4..907777d 100644
--- a/doc/directory_layout.txt
+++ b/doc/directory_layout.txt
@@ -34,13 +34,6 @@ short description.
Maven are installed. Each POM must have name that strictly
corresponds to JAR file in `%{_javadir}` or `%{_jnidir}`.
-*`%{_mavendepmapfragdir}`* -- `/usr/share/maven-fragments`::
-
- Directory containing package metadata in XML format. Typically
- each binary package installs there a single XML file containing
- various information (metadata) about artifacts associated with
- that package.
-
.Other directories
[glossary]
diff --git a/doc/generic_java_build.txt b/doc/generic_java_build.txt
index 6fb09bb..5c29c95 100644
--- a/doc/generic_java_build.txt
+++ b/doc/generic_java_build.txt
@@ -11,49 +11,18 @@ POM or JAR file, we may use the `%add_maven_depmap` macro. However, if package
is build in standard way (i.e.: `%mvn_build` and `%mvn_install`), then calling
`%add_maven_depmap` is neither needed nor recommended. This macro is usually
useful only for packages that use other build tool than Maven (e.g.: ant,
-gradle). It creates files in `%{_mavendepmapfragdir}` that map
-groupId:artifactId pairs to JAR files under `%{_javadir}`. These files are
-called depmap fragments. The macro can read the groupId and artifactId from the
-POM file or maintainer can pass this information as an argument. All fragments
-in `%{_mavendepmapfragdir}` directory are read by XMvn, allowing the
-locally installed JAR and POM files to be used as a maven repository.
-
-Note that -- unless you use the `-f` option as shown below -- all
-depmap fragments for a given package are written to the same file,
-`%{_mavendepmapfragdir}/%{name}`. You should be sure to include this
-file in the `%files` section of your RPM.
+gradle).
For the macro to work properly, all JAR files must be copied into `%{_javadir}`
-and all POM files must be copied into `%{_mavenpomdir}` and given file names of
-the following form, where `jarname` is the name of the JAR without the .jar
-suffix:
+and all POM files must be copied into `%{_mavenpomdir}`.
-[source,spec]
---------
-%{_mavenpomdir}/JPP[.subdirectory]-jarname.pom
---------
-
-Note that the subdirectory is only necessary if the JAR file is put into a
-subdirectory of `%{_javadir}`. For example:
-
-* For junit, the JAR is `%{_javadir}/junit.jar`, so the POM would be
- `%{_mavenpomdir}/JPP-junit.pom`.
-* For plexus-ant-factory, the JAR is `%{_javadir}/plexus/ant-factory.jar`, so
- the POM would named `%{_mavenpomdir}/JPP.plexus-ant-factory.pom`.
-
-If a POM is installed with no corresponding JAR file -- for example, for parent
-POM files -- the same convention should be followed:
-
-* The Apache commons parent POM is installed in
- `%{_mavenpomdir}/JPP-commons-parent.pom`.
-
-In its simplest form (a POM without a JAR file), `%add_maven_depmap` looks like
+In simplest form (a POM without a JAR file), `%add_maven_depmap` looks like
this:
.Parent POM
[source,spec]
--------
-%add_maven_depmap JPP-%{name}.pom
+%add_maven_depmap %{name}.pom
--------
This will read the POM file in question and provide a mapping between the
@@ -65,7 +34,7 @@ For a POM that maps directly to a JAR file, the following is the correct form:
.Standard invocation
[source,spec]
--------
-%add_maven_depmap JPP-%{name}.pom %{name}.jar
+%add_maven_depmap %{name}.pom %{name}.jar
--------
In addition to creating the POM mapping, this will also ensure that the correct
@@ -82,7 +51,7 @@ mapping between Maven artifact and corresponding JAR file:
.Providing additional artifact mappings
[source,spec]
--------
-%add_maven_depmap JPP-%{name}.pom %{name}.jar -a "org.apache.commons:commons-lang"
+%add_maven_depmap %{name}.pom %{name}.jar -a "org.apache.commons:commons-lang"
--------
This form also adds additional mappings for given POM/JAR file. For example, if
the POM file indicates that it contains groupId commons-lang, artifactId
@@ -94,16 +63,16 @@ require different IDs than those reflected in the installed POM.
.Multiple subpackages
[source,spec]
--------
-%add_maven_depmap JPP-%{name}.pom %{name}.jar -f "XXX"
+%add_maven_depmap %{name}.pom %{name}.jar -f "XXX"
--------
-This form stores dependency mapping inside `%{_mavendepmapfragdir}/%{name}-XXX`
-instead of standard location. This is useful for packages with multiple
-subpackages where each has its own JAR files.
+This form stores metadata information in file with suffix "XXX". This
+is useful for packages with multiple subpackages where each has its own
+JAR files.
.Multiple artifacts in a subdirectory
[source,spec]
--------
-%add_maven_depmap JPP.%{name}-sub.pom %{name}/sub.jar
+%add_maven_depmap %{name}-sub.pom %{name}/sub.jar
--------
This form should be used when a package consists of multiple JAR files that are
diff --git a/doc/index.txt b/doc/index.txt
index f9af27e..22c9ab2 100644
--- a/doc/index.txt
+++ b/doc/index.txt
@@ -63,22 +63,6 @@ References
'DocBook - The Definitive Guide'. O'Reilly & Associates. 1999.
ISBN 1-56592-580-7.
-
-[glossary]
-Glossary
---------
-Glossaries are optional. Glossaries entries are an example of a style
-of AsciiDoc labeled lists.
-
-[glossary]
-[[Xdepmap]]depmap::
- Depmap is a special file telling Maven relationships between
- groupId,artifactId and JAR file on the filesystem
-
-A second glossary term::
- The corresponding (indented) definition.
-
-
ifdef::backend-docbook[]
[index]
Example Index
diff --git a/doc/maven.txt b/doc/maven.txt
index 7539d00..63c8cc8 100644
--- a/doc/maven.txt
+++ b/doc/maven.txt
@@ -35,7 +35,7 @@ BuildRequires: maven-local
The macros `%mvn_build` and `%mvn_install` automatically handle building of the
JAR files and their subsequent installation to the correct directory. The
-corresponding POM and <<Xdepmap,depmap>> files are also installed.
+corresponding POM and metadata files are also installed.
[[packaging_maven_project]]
=== Packaging Maven project
diff --git a/doc/mvn_macros.txt b/doc/mvn_macros.txt
index c1b9aa2..1115cc8 100644
--- a/doc/mvn_macros.txt
+++ b/doc/mvn_macros.txt
@@ -66,7 +66,7 @@ If the project consists of multiple artifacts, it is recommended to install each
artifact to the separate subpackage. The macro `%mvn_build -s` will generate
separate `.mfiles` file for every artifact in the project. This file contains
list of files related to specific artifact (typically JAR file, POM file and
-depmap). It can be later used in `%files` section of the spec file.
+metadata). It can be later used in `%files` section of the spec file.
.Creating one subpackage for each generated artifact
[source,spec]