# Note to the interested reader: # fedpkg mockbuild --without tests # will make mvn_build macro skip tests. # See: https://github.com/fedora-java/javapackages/issues/62 %global javacup_or_asm java_cup:java_cup|org\\.ow2\\.asm:asm.* # Don't have generated mvn()-style requires for java_cup or asm %global mvn_javacup_or_asm_matcher .*mvn\\(%{javacup_or_asm}\\) # Don't have generated requires for java-headless >= 1:1.9 %global java_headless_matcher java-headless >= 1:(1\\.9|9) %global __requires_exclude ^%{mvn_javacup_or_asm_matcher}|%{java_headless_matcher}$ %global homedir %{_datadir}/%{name} %global bindir %{homedir}/bin Name: byteman Version: 4.0.11 Release: %mkrel 2 Group: Development/Java Summary: Java agent-based bytecode injection tool License: LGPLv2+ URL: http://www.jboss.org/byteman # wget -O 4.0.11.tar.gz https://github.com/bytemanproject/byteman/archive/4.0.11.tar.gz Source0: https://github.com/bytemanproject/byteman/archive/%{version}.tar.gz BuildArch: noarch # Byteman 4.x requires JDK 9+ to build. Require JDK 10 explicitly. BuildRequires: java-11-openjdk-devel BuildRequires: maven-local BuildRequires: maven-shade-plugin BuildRequires: maven-source-plugin BuildRequires: maven-plugin-plugin BuildRequires: maven-plugin-bundle BuildRequires: maven-assembly-plugin BuildRequires: maven-failsafe-plugin BuildRequires: maven-jar-plugin BuildRequires: maven-surefire-plugin BuildRequires: maven-surefire-provider-testng BuildRequires: maven-surefire-provider-junit BuildRequires: maven-surefire-provider-junit5 BuildRequires: maven-verifier-plugin BuildRequires: maven-dependency-plugin BuildRequires: java_cup BuildRequires: objectweb-asm BuildRequires: junit BuildRequires: junit5 BuildRequires: testng # JBoss modules byteman plugin requires it BuildRequires: mvn(org.jboss.modules:jboss-modules) Provides: bundled(objectweb-asm) = 7.0 Provides: bundled(java_cup) = 1:0.11b-8 # We are filtering java-headless >= 1:1.9 requirement. Add # JDK 8 requirement here explicitly which shouldn't match the filter. Requires: java-headless >= 1:1.8 # Related pieces removed via pom_xpath_remove macros Patch1: remove_submit_integration_test_verification.patch Patch2: tests_pom_xml.patch %description Byteman is a tool which simplifies tracing and testing of Java programs. Byteman allows you to insert extra Java code into your application, either as it is loaded during JVM startup or even after it has already started running. The injected code is allowed to access any of your data and call any application methods, including where they are private. You can inject code almost anywhere you want and there is no need to prepare the original source code in advance nor do you have to recompile, repackage or redeploy your application. In fact you can remove injected code and reinstall different code while the application continues to execute. %package javadoc Summary: Javadoc for %{name} %description javadoc This package contains the API documentation for %{name}. %package rulecheck-maven-plugin Summary: Maven plugin for checking Byteman rules %description rulecheck-maven-plugin This package contains the Byteman rule check maven plugin. %package bmunit Summary: TestNG and JUnit integration for Byteman %description bmunit The Byteman bmunit jar provides integration of Byteman into TestNG and JUnit tests. %package dtest Summary: Remote byteman instrumented testing %description dtest The Byteman dtest jar supports instrumentation of test code executed on remote server hosts and validation of assertions describing the expected operation of the instrumented methods. %prep %setup -q -n byteman-%{version} # Fix the gid:aid for java_cup sed -i "s|net.sf.squirrel-sql.thirdparty-non-maven|java_cup|" agent/pom.xml sed -i "s|java-cup|java_cup|" agent/pom.xml sed -i "s|net.sf.squirrel-sql.thirdparty-non-maven|java_cup|" tests/pom.xml sed -i "s|java-cup|java_cup|" tests/pom.xml # Remove Submit integration test invocations (agent) %pom_xpath_remove "pom:build/pom:plugins/pom:plugin[pom:artifactId='maven-failsafe-plugin']/pom:executions/pom:execution[pom:id='submit.TestSubmit']" agent %pom_xpath_remove "pom:build/pom:plugins/pom:plugin[pom:artifactId='maven-failsafe-plugin']/pom:executions/pom:execution[pom:id='submit.TestSubmit.compiled']" agent %patch1 -p2 %patch2 -p2 # Remove Submit integration test invocations (tests) %pom_xpath_remove "pom:build/pom:plugins/pom:plugin[pom:artifactId='maven-failsafe-plugin']/pom:executions/pom:execution[pom:id='submit.TestSubmit']" tests %pom_xpath_remove "pom:build/pom:plugins/pom:plugin[pom:artifactId='maven-failsafe-plugin']/pom:executions/pom:execution[pom:id='submit.TestSubmit.compiled']" tests # Remove scope=system and systemPath for com.sun:tools %pom_xpath_remove "pom:profiles/pom:profile/pom:dependencies/pom:dependency[pom:artifactId='tools']/pom:scope" install %pom_xpath_remove "pom:profiles/pom:profile/pom:dependencies/pom:dependency[pom:artifactId='tools']/pom:systemPath" install %pom_xpath_remove "pom:profiles/pom:profile/pom:dependencies/pom:dependency[pom:artifactId='tools']/pom:scope" contrib/bmunit %pom_xpath_remove "pom:profiles/pom:profile/pom:dependencies/pom:dependency[pom:artifactId='tools']/pom:systemPath" contrib/bmunit # Some tests fail intermittently during builds. Disable them. %pom_xpath_remove "pom:build/pom:plugins/pom:plugin[pom:artifactId='maven-surefire-plugin']/pom:executions" contrib/bmunit %pom_xpath_set "pom:build/pom:plugins/pom:plugin[pom:artifactId='maven-surefire-plugin']/pom:configuration" '<skip>true</skip>' contrib/bmunit # Don't build download, docs modules %pom_disable_module download %pom_disable_module docs # Don't use javadoc plugin, use XMvn for javadocs %pom_remove_plugin -r :maven-javadoc-plugin %pom_xpath_remove 'pom:execution[pom:id="make-javadoc-assembly"]' byteman # Put byteman-rulecheck-maven-plugin into a separate package %mvn_package ":byteman-rulecheck-maven-plugin" rulecheck-maven-plugin # Put byteman-bmunit/byteman-dtest into a separate packages since they # runtime require junit %mvn_package ":byteman-bmunit" bmunit %mvn_package ":byteman-dtest" dtest %build export JAVA_HOME=/usr/lib/jvm/java-11-openjdk # Use --xmvn-javadoc so as to avoid maven-javadoc-plugin issue # (fixed in 3.1.0, fedora has 3.0.1): # See https://issues.apache.org/jira/browse/MJAVADOC-555 # https://bugs.openjdk.java.net/browse/JDK-8212233 %mvn_build --xmvn-javadoc %install %mvn_install install -d -m 755 $RPM_BUILD_ROOT%{_bindir} install -d -m 755 $RPM_BUILD_ROOT%{homedir} install -d -m 755 $RPM_BUILD_ROOT%{homedir}/lib install -d -m 755 $RPM_BUILD_ROOT%{bindir} install -m 755 bin/bmsubmit.sh $RPM_BUILD_ROOT%{bindir}/bmsubmit install -m 755 bin/bminstall.sh $RPM_BUILD_ROOT%{bindir}/bminstall install -m 755 bin/bmjava.sh $RPM_BUILD_ROOT%{bindir}/bmjava install -m 755 bin/bmcheck.sh $RPM_BUILD_ROOT%{bindir}/bmcheck for f in bmsubmit bmjava bminstall bmcheck; do cat > $RPM_BUILD_ROOT%{_bindir}/${f} << EOF #!/bin/sh export BYTEMAN_HOME=/usr/share/byteman export JAVA_HOME=/usr/lib/jvm/java \$BYTEMAN_HOME/bin/${f} \$* EOF done chmod 755 $RPM_BUILD_ROOT%{_bindir}/* for m in bmunit dtest install sample submit; do ln -s %{_javadir}/byteman/byteman-${m}.jar $RPM_BUILD_ROOT%{homedir}/lib/byteman-${m}.jar done %files -f .mfiles %{bindir}/* %{_bindir}/* %doc README %license docs/copyright.txt %files javadoc -f .mfiles-javadoc %license docs/copyright.txt %files rulecheck-maven-plugin -f .mfiles-rulecheck-maven-plugin %license docs/copyright.txt %files bmunit -f .mfiles-bmunit %license docs/copyright.txt %files dtest -f .mfiles-dtest %license docs/copyright.txt #%{homedir}/lib/byteman-dtest.jar %changelog * Wed Jan 06 2021 tmb <tmb> 4.0.11-2.mga8 + Revision: 1669156 - fix summarys + neoclust <neoclust> - Rebuild against fixed java stack + daviddavid <daviddavid> - Upgrated to latest upstream version 4.0.11 (sync with fc33) - Added a patch to fix rpm build issue caused due to misconfiguration in upstream - Added required additional plugins required for build - Drop not needed BR jarjar. Fixes FTBFS. - Use XMvn javadoc so as to work-around maven-javadoc-plugin issue * Tue Feb 11 2020 umeabot <umeabot> 3.0.6-5.mga8 + Revision: 1490260 - Mageia 8 Mass Rebuild * Tue Sep 18 2018 umeabot <umeabot> 3.0.6-4.mga7 + Revision: 1261686 - Mageia 7 Mass Rebuild * Tue Sep 18 2018 umeabot <umeabot> 3.0.6-3.mga7 + Revision: 1259975 - Mageia 7 Mass Rebuild * Thu May 18 2017 neoclust <neoclust> 3.0.6-2.mga6 + Revision: 1102967 - Fix BuildRequires * Sun Aug 14 2016 daviddavid <daviddavid> 3.0.6-1.mga6 + Revision: 1046461 - Update to latest upstream 3.0.6 release * Tue May 10 2016 daviddavid <daviddavid> 3.0.4-1.mga6 + Revision: 1012285 - Update to latest upstream 3.0.4 release - Enable some tests during build - Fix generated requires by filtering requires for bundled libs - Split maven plugin into separate package * Wed Mar 02 2016 neoclust <neoclust> 2.1.4.1-10.mga6 + Revision: 982101 - Second rebuild of the java stack * Sun Feb 21 2016 neoclust <neoclust> 2.1.4.1-9.mga6 + Revision: 975693 - First rebuild of the java stack - sync package byteman with fedora + umeabot <umeabot> - Mageia 6 Mass Rebuild * Fri Feb 27 2015 pterjan <pterjan> 2.1.2-6.mga5 + Revision: 817136 - Update BuildRequires * Wed Oct 15 2014 umeabot <umeabot> 2.1.2-5.mga5 + Revision: 747817 - Second Mageia 5 Mass Rebuild - Mageia 5 Mass Rebuild - Mageia 4 Mass Rebuild * Sun Sep 29 2013 dmorgan <dmorgan> 2.1.2-2.mga4 + Revision: 489199 - New version * Fri Jan 11 2013 umeabot <umeabot> 1.5.2-7.mga3 + Revision: 347258 - Mass Rebuild - https://wiki.mageia.org/en/Feature:Mageia3MassRebuild * Fri Jan 04 2013 dmorgan <dmorgan> 1.5.2-6.mga3 + Revision: 338777 - Adapt to maven macros * Fri Aug 05 2011 dmorgan <dmorgan> 1.5.2-1.mga2 + Revision: 131968 - Clean spec file + gil <gil> - imported package byteman * Wed Jul 27 2011 Marek Goldmann <mgoldman@redhat.com> 1.5.2-1 - Upstream release: 1.5.2 * Thu Jul 21 2011 Marek Goldmann <mgoldman@redhat.com> 1.5.1-1 - Initial packaging