# Exclude automatically generated requires on java interpreter which is not # owned by any package %global __requires_exclude ^/usr/lib/jvm/java # Don't run OSGi dependency generators on private (bundled) JARs %global __requires_exclude_from \\.jar$ %global __provides_exclude_from \\.jar$ %global mavenHomePath %{_datadir}/%{name} %global metadataPath %{mavenHomePath}/maven-metadata %global artifactsPath %{_javadir} %global launchersPath %{mavenHomePath}/bin Name: javapackages-bootstrap Version: 1.0.0 Release: 1%{?dist} Summary: A means of bootstrapping Java Packages Tools # For detailed info see the file javapackages-bootstrap-PACKAGE-LICENSING License: ASL 2.0 and ASL 1.1 and (ASL 2.0 or EPL-2.0) and (EPL-2.0 or GPLv2 with exceptions) and MIT and BSD with advertising and BSD and EPL-1.0 and EPL-2.0 and CDDL-1.0 and xpp and CC0 and Public Domain URL: https://github.com/fedora-java/javapackages-bootstrap BuildArch: noarch Source0: https://github.com/fedora-java/javapackages-bootstrap/releases/download/%{version}/javapackages-bootstrap-%{version}.tar.xz # License breakdown Source1: javapackages-bootstrap-PACKAGE-LICENSING # Extracted custom license files Source2: plexus-compiler-LICENSE-MIT Source3: plexus-containers-LICENSE-MIT Source4: plexus-interpolation-LICENSE-MIT Source5: plexus-resources-LICENSE-MIT # To obtain the following sources: # git clone https://github.com/fedora-java/javapackages-bootstrap.git # pushd javapackages-bootstrap-${version} # ./downstream.sh clone # ./downstream.sh prep # ./downstream.sh archive # The results are in the archive directory Source1002: apache-pom.tar.xz Source1001: ant.tar.xz Source1003: apiguardian.tar.xz Source1004: asm.tar.xz Source1005: assertj-core.tar.xz Source1006: bnd.tar.xz Source1007: build-helper-maven-plugin.tar.xz Source1008: byte-buddy.tar.xz Source1009: cdi.tar.xz Source1010: cglib.tar.xz Source1011: common-annotations-api.tar.xz Source1012: commons-beanutils.tar.xz Source1013: commons-cli.tar.xz Source1014: commons-codec.tar.xz Source1015: commons-collections.tar.xz Source1016: commons-compress.tar.xz Source1017: commons-io.tar.xz Source1018: commons-jxpath.tar.xz Source1019: commons-lang.tar.xz Source1020: commons-logging.tar.xz Source1021: commons-parent-pom.tar.xz Source1022: cup.tar.xz Source1023: easymock.tar.xz Source1024: felix-parent-pom.tar.xz Source1025: felix-utils.tar.xz Source1026: fusesource-pom.tar.xz Source1027: guava.tar.xz Source1028: guice.tar.xz Source1029: hamcrest.tar.xz Source1030: httpcomponents-client.tar.xz Source1031: httpcomponents-core.tar.xz Source1032: httpcomponents-parent-pom.tar.xz Source1033: injection-api.tar.xz Source1034: jansi.tar.xz Source1035: jcommander.tar.xz Source1036: jdom.tar.xz Source1037: jdom2.tar.xz Source1038: jflex.tar.xz Source1039: jsoup.tar.xz Source1040: jsr-305.tar.xz Source1041: junit4.tar.xz Source1042: junit5.tar.xz Source1043: maven-antrun-plugin.tar.xz Source1044: maven-archiver.tar.xz Source1045: maven-artifact-transfer.tar.xz Source1046: maven-assembly-plugin.tar.xz Source1047: maven-bundle-plugin.tar.xz Source1048: maven-common-artifact-filters.tar.xz Source1049: maven-compiler-plugin.tar.xz Source1050: maven-dependency-analyzer.tar.xz Source1051: maven-dependency-plugin.tar.xz Source1052: maven-dependency-tree.tar.xz Source1053: maven-enforcer.tar.xz Source1054: maven-file-management.tar.xz Source1055: maven-filtering.tar.xz Source1056: maven-jar-plugin.tar.xz Source1057: maven-parent-pom.tar.xz Source1058: maven-plugin-testing.tar.xz Source1059: maven-plugin-tools.tar.xz Source1060: maven-remote-resources-plugin.tar.xz Source1061: maven-resolver.tar.xz Source1062: maven-resources-plugin.tar.xz Source1063: maven-resources.tar.xz Source1064: maven-shared-incremental.tar.xz Source1065: maven-shared-io.tar.xz Source1066: maven-shared-utils.tar.xz Source1067: maven-source-plugin.tar.xz Source1068: maven-surefire.tar.xz Source1069: maven-verifier.tar.xz Source1070: maven-wagon.tar.xz Source1071: maven.tar.xz Source1072: mockito.tar.xz Source1073: modello.tar.xz Source1074: mojo-parent-pom.tar.xz Source1075: munge-maven-plugin.tar.xz Source1076: objenesis.tar.xz Source1077: opentest4j.tar.xz Source1078: osgi-annotation.tar.xz Source1079: osgi-cmpn.tar.xz Source1080: osgi-core.tar.xz Source1081: oss-parent-pom.tar.xz Source1082: plexus-archiver.tar.xz Source1083: plexus-cipher.tar.xz Source1084: plexus-classworlds.tar.xz Source1085: plexus-compiler.tar.xz Source1086: plexus-components-pom.tar.xz Source1087: plexus-containers.tar.xz Source1088: plexus-interpolation.tar.xz Source1089: plexus-io.tar.xz Source1090: plexus-languages.tar.xz Source1091: plexus-pom.tar.xz Source1092: plexus-resources.tar.xz Source1093: plexus-sec-dispatcher.tar.xz Source1094: plexus-utils.tar.xz Source1095: qdox.tar.xz Source1096: servlet-api.tar.xz Source1097: sisu-build-api.tar.xz Source1098: sisu-inject.tar.xz Source1099: sisu-mojos.tar.xz Source1100: sisu-plexus.tar.xz Source1101: slf4j.tar.xz Source1102: testng.tar.xz Source1103: univocity-parsers.tar.xz Source1104: velocity-engine.tar.xz Source1105: xbean.tar.xz Source1106: xmlunit.tar.xz Source1107: xmvn.tar.xz Source1108: xz-java.tar.xz Provides: bundled(ant) = 1.10.9 Provides: bundled(apache-parent) = 23 Provides: bundled(apiguardian) = 1.1.0 Provides: bundled(objectweb-asm) = 9.0 Provides: bundled(assertj-core) = 3.17.2 Provides: bundled(aqute-bnd) = 5.1.2 Provides: bundled(maven-plugin-build-helper) = 3.2.0 Provides: bundled(byte-buddy) = 1.10.16 Provides: bundled(cdi-api) = 2.0.2 Provides: bundled(cglib) = 3.3.0 Provides: bundled(jakarta-annotations) = 1.3.5 Provides: bundled(apache-commons-beanutils) = 1.9.4 Provides: bundled(apache-commons-cli) = 1.4 Provides: bundled(apache-commons-codec) = 1.15 Provides: bundled(apache-commons-collections) = 3.2.2 Provides: bundled(apache-commons-compress) = 1.20 Provides: bundled(apache-commons-io) = 2.8.0 Provides: bundled(apache-commons-jxpath) = 1.3 Provides: bundled(apache-commons-lang3) = 3.11 Provides: bundled(apache-commons-logging) = 1.2 Provides: bundled(apache-commons-parent) = 52 Provides: bundled(java_cup) = 0.11b Provides: bundled(easymock) = 4.2 Provides: bundled(felix-parent) = 7 Provides: bundled(felix-utils) = 1.11.4 Provides: bundled(fusesource-pom) = 1.12 Provides: bundled(guava) = 29.0 Provides: bundled(google-guice) = 4.2.3 Provides: bundled(hamcrest) = 2.2 Provides: bundled(httpcomponents-client) = 4.5.11 Provides: bundled(httpcomponents-core) = 4.4.13 Provides: bundled(httpcomponents-project) = 12 Provides: bundled(atinject) = 1.0.3 Provides: bundled(jansi) = 1.18 Provides: bundled(beust-jcommander) = 1.78 Provides: bundled(jdom) = 1.1.3 Provides: bundled(jdom2) = 2.0.6 Provides: bundled(jflex) = 1.7.0 Provides: bundled(jsoup) = 1.13.1 Provides: bundled(jsr-305) = 3.0.2 Provides: bundled(junit) = 4.13 Provides: bundled(junit5) = 5.7.0 Provides: bundled(maven-antrun-plugin) = 3.0.0 Provides: bundled(maven-archiver) = 3.5.0 Provides: bundled(maven-artifact-transfer) = 0.12.0 Provides: bundled(maven-assembly-plugin) = 3.3.0 Provides: bundled(maven-plugin-bundle) = 5.1.1 Provides: bundled(maven-common-artifact-filters) = 3.1.0 Provides: bundled(maven-compiler-plugin) = 3.8.1 Provides: bundled(maven-dependency-analyzer) = 1.11.3 Provides: bundled(maven-dependency-plugin) = 3.1.2 Provides: bundled(maven-dependency-tree) = 3.0.1 Provides: bundled(maven-enforcer) = 3.0.0~M2 Provides: bundled(maven-file-management) = 3.0.0 Provides: bundled(maven-filtering) = 3.2.0 Provides: bundled(maven-jar-plugin) = 3.2.0 Provides: bundled(maven-parent) = 34 Provides: bundled(maven-plugin-testing) = 3.3.0 Provides: bundled(maven-plugin-tools) = 3.6.0 Provides: bundled(maven-remote-resources-plugin) = 1.7.0 Provides: bundled(maven-resolver) = 1.4.2 Provides: bundled(maven-resources-plugin) = 3.2.0 Provides: bundled(maven-resources) = 1.4 Provides: bundled(maven-shared-incremental) = 1.1 Provides: bundled(maven-shared-io) = 3.0.0 Provides: bundled(maven-shared-utils) = 3.3.3 Provides: bundled(maven-source-plugin) = 3.2.1 Provides: bundled(maven-surefire) = 3.0.0~M3 Provides: bundled(maven-verifier) = 1.7.2 Provides: bundled(maven-wagon) = 3.4.1 Provides: bundled(maven) = 3.6.3 Provides: bundled(mockito) = 3.5.13 Provides: bundled(modello) = 1.11 Provides: bundled(mojo-parent) = 50 Provides: bundled(munge-maven-plugin) = 1.0 Provides: bundled(objenesis) = 3.1 Provides: bundled(opentest4j) = 1.2.0 Provides: bundled(osgi-annotation) = 7.0.0 Provides: bundled(osgi-compendium) = 7.0.0 Provides: bundled(osgi-core) = 7.0.0 Provides: bundled(sonatype-oss-parent) = 7 Provides: bundled(plexus-archiver) = 4.2.2 Provides: bundled(plexus-cipher) = 1.7 Provides: bundled(plexus-classworlds) = 2.6.0 Provides: bundled(plexus-compiler) = 2.8.8 Provides: bundled(plexus-components-pom) = 6.4 Provides: bundled(plexus-containers) = 2.1.0 Provides: bundled(plexus-interpolation) = 1.26 Provides: bundled(plexus-io) = 3.2.0 Provides: bundled(plexus-languages) = 1.0.5 Provides: bundled(plexus-pom) = 6.4 Provides: bundled(plexus-resources) = 1.1.0 Provides: bundled(plexus-sec-dispatcher) = 1.4 Provides: bundled(plexus-utils) = 3.3.0 Provides: bundled(qdox) = 2.0.0 Provides: bundled(jakarta-servlet) = 4.0.3 Provides: bundled(plexus-build-api) = 0.0.7 Provides: bundled(sisu) = 0.3.4 Provides: bundled(sisu-mojos) = 0.3.4 Provides: bundled(sisu-plexus) = 0.3.4 Provides: bundled(slf4j) = 1.7.30 Provides: bundled(testng) = 7.3.0 Provides: bundled(univocity-parsers) = 2.9.0 Provides: bundled(velocity) = 1.7 Provides: bundled(xbean) = 4.14 Provides: bundled(xmlunit) = 2.7.0 Provides: bundled(xmvn) = 4.0.0~SNAPSHOT Provides: bundled(xz-java) = 1.8 BuildRequires: byaccj BuildRequires: java-11-openjdk-devel BuildRequires: java-1.8.0-openjdk-devel BuildRequires: javapackages-generators Requires: bash Requires: coreutils Requires: java-11-openjdk-devel Requires: procps-ng %description In a nutshell, Java Packages Bootstrap (JPB) is a standalone build of all Java software packages that are required for Java Packages Tools (JPT) to work. In order to achieve reliable and reproducible builds of Java packages while meeting Fedora policy that requires everything to be built from source, without using prebuilt binary artifacts, it is necessary to build the packages in a well-defined, acyclic order. Dependency cycles between packages are the biggest obstacle to achieving this goal and JPT is the biggest offender -- it requires more than a hundred of Java packages, all of which in turn build-require JPT. JPB comes with a solution to this problem -- it builds everything that JPT needs to work, without reliance on any Java software other than OpenJDK. JPT can depend on JPB for everything, without depending on any other Java packages. For example, JPB contains embedded version of XMvn, removing dependency of JPT on XMvn, allowing JPT to be used before one builds XMvn package. %prep %setup -q mkdir licenses cp -p %(echo %{sources} | cut -d' ' -f2-6) licenses # leave out the first source as it has already been extracted # leave out license files other_sources=$(echo %{sources} | cut -d' ' -f7-) for source in ${other_sources} do tar -xf "${source}" done for patch_path in patches/*/* do package_name="$(echo ${patch_path} | cut -f2 -d/)" patch_name="$(echo ${patch_path} | cut -f3 -d/)" pushd "downstream/${package_name}" patch -p1 < "../../patches/${package_name}/${patch_name}" popd done # This file would otherwise be installed along with the executables rm downstream/maven/apache-maven/src/bin/.gitattributes %build export LC_ALL=C.utf8 ./mbi.j build -parallel %install ./mbi.j dist \ -basePackageName=%{name} \ -installRoot=%{buildroot} \ -mavenHomePath=%{mavenHomePath} \ -metadataPath=%{metadataPath} \ -artifactsPath=%{artifactsPath} \ -launchersPath=%{launchersPath} \ # fix permissions for f in mvn mvnDebug mvnyjp do chmod +x "%{buildroot}%{mavenHomePath}/bin/${f}" done for f in ant cup jflex xmvn-install xmvn-resolve xmvn-subst do chmod g-w "%{buildroot}%{launchersPath}/${f}" done # remove zero-size files find %{buildroot}%{artifactsPath} -type f -size 0 -delete # install license files license_directory="%{buildroot}%{_licensedir}/%{name}" install -d -m 755 "${license_directory}" ## install license breakdown and extracted custom licenses for license_file in licenses/* do install -p -m 644 "${license_file}" "${license_directory}/$(basename ${license_file})" done ## install downstream licenses install -p -m 644 LICENSE "${license_directory}/LICENSE" install -p -m 644 NOTICE "${license_directory}/NOTICE" function install_license() { install -p -m 644 "downstream/${1}/${2}" "${license_directory}/${1}-${2}" } install_license ant NOTICE install_license bnd LICENSE install_license build-helper-maven-plugin LICENSE.txt install_license byte-buddy NOTICE install_license cglib NOTICE install_license common-annotations-api LICENSE.md install_license common-annotations-api NOTICE.md install_license commons-beanutils NOTICE.txt install_license commons-cli NOTICE.txt install_license commons-codec NOTICE.txt install_license commons-collections NOTICE.txt install_license commons-compress NOTICE.txt install_license commons-io NOTICE.txt install_license commons-jxpath NOTICE.txt install_license commons-lang NOTICE.txt install_license commons-logging NOTICE.txt install_license commons-parent-pom NOTICE.txt install_license cup licence.txt install_license felix-parent-pom NOTICE install_license felix-utils NOTICE install_license fusesource-pom notice.txt install_license httpcomponents-client NOTICE.txt install_license httpcomponents-core NOTICE.txt install_license httpcomponents-parent-pom NOTICE.txt install_license injection-api NOTICE.md install_license jcommander notice.md install_license jsoup LICENSE install_license junit4 LICENSE-junit.txt install_license junit5 LICENSE.md install_license maven-bundle-plugin NOTICE install_license maven-enforcer NOTICE install_license maven NOTICE install_license mockito LICENSE install_license modello LICENSE.txt install_license munge-maven-plugin LICENSE install_license plexus-cipher NOTICE.txt install_license plexus-io NOTICE.txt install_license plexus-utils NOTICE.txt install_license servlet-api LICENSE.md install_license servlet-api NOTICE.md install_license sisu-inject LICENSE.txt install_license sisu-mojos LICENSE.txt install_license sisu-plexus LICENSE.txt install_license slf4j LICENSE.txt install_license velocity-engine NOTICE install_license xbean NOTICE install_license xmvn NOTICE %files %{mavenHomePath} %{metadataPath}/* %{artifactsPath}/* %{launchersPath}/* %license %{_licensedir}/%{name} %doc README.md %doc AUTHORS %changelog * Wed Nov 25 2020 Marian Koncek - 1.0.0-1 - Initial commit