bc91f2
# Note to the interested reader:
bc91f2
#   fedpkg mockbuild --without tests
bc91f2
# will make mvn_build macro skip tests.
bc91f2
# See: https://github.com/fedora-java/javapackages/issues/62
bc91f2
bc91f2
%global javacup_or_asm java_cup:java_cup|org\\.ow2\\.asm:asm.*
bc91f2
# Don't have generated mvn()-style requires for java_cup or asm
bc91f2
%global mvn_javacup_or_asm_matcher .*mvn\\(%{javacup_or_asm}\\)
bc91f2
# Don't have generated requires for java-headless >= 1:1.9
bc91f2
%global java_headless_matcher java-headless >= 1:(1\\.9|9)
bc91f2
%global __requires_exclude ^%{mvn_javacup_or_asm_matcher}|%{java_headless_matcher}$
bc91f2
bc91f2
%global homedir %{_datadir}/%{name}
bc91f2
%global bindir %{homedir}/bin
bc91f2
bc91f2
Name:             byteman
bc91f2
Version:          4.0.16
bc91f2
Release:          2%{?dist}
bc91f2
Summary:          Java agent-based bytecode injection tool
bc91f2
License:          LGPLv2+
bc91f2
URL:              http://www.jboss.org/byteman
bc91f2
# wget -O 4.0.16.tar.gz https://github.com/bytemanproject/byteman/archive/4.0.16.tar.gz
bc91f2
Source0:          https://github.com/bytemanproject/byteman/archive/%{version}.tar.gz
bc91f2
bc91f2
BuildArch:        noarch
bc91f2
bc91f2
# Byteman 4.x requires JDK 9+ to build. Require JDK 10 explicitly.
bc91f2
BuildRequires:    java-11-openjdk-devel
bc91f2
BuildRequires:    maven-local
bc91f2
BuildRequires:    maven-shade-plugin
bc91f2
BuildRequires:    maven-source-plugin
bc91f2
BuildRequires:    maven-plugin-plugin
bc91f2
BuildRequires:    maven-plugin-bundle
bc91f2
BuildRequires:    maven-assembly-plugin
bc91f2
BuildRequires:    maven-failsafe-plugin
bc91f2
BuildRequires:    maven-jar-plugin
bc91f2
BuildRequires:    maven-surefire-plugin
bc91f2
BuildRequires:    maven-surefire-provider-testng
bc91f2
BuildRequires:    maven-surefire-provider-junit
bc91f2
BuildRequires:    maven-surefire-provider-junit5
bc91f2
BuildRequires:    maven-verifier-plugin
bc91f2
BuildRequires:    maven-dependency-plugin
bc91f2
BuildRequires:    java_cup
bc91f2
BuildRequires:    objectweb-asm
bc91f2
BuildRequires:    junit
bc91f2
BuildRequires:    junit5
bc91f2
BuildRequires:    testng
bc91f2
bc91f2
Provides:         bundled(objectweb-asm) = 9.1
bc91f2
Provides:         bundled(java_cup) = 1:0.11b-19
bc91f2
# We are filtering java-headless >= 1:1.9 requirement. Add
bc91f2
# JDK 8 requirement here explicitly which shouldn't match the filter.
bc91f2
Requires:         java-headless >= 1:1.8
bc91f2
bc91f2
# Related pieces removed via pom_xpath_remove macros
bc91f2
Patch1:           remove_submit_integration_test_verification.patch
bc91f2
Patch2:           testng7_port.patch
bc91f2
bc91f2
%description
bc91f2
Byteman is a tool which simplifies tracing and testing of Java programs.
bc91f2
Byteman allows you to insert extra Java code into your application,
bc91f2
either as it is loaded during JVM startup or even after it has already
bc91f2
started running. The injected code is allowed to access any of your data
bc91f2
and call any application methods, including where they are private.
bc91f2
You can inject code almost anywhere you want and there is no need to
bc91f2
prepare the original source code in advance nor do you have to recompile,
bc91f2
repackage or redeploy your application. In fact you can remove injected
bc91f2
code and reinstall different code while the application continues to execute.
bc91f2
bc91f2
%package javadoc
bc91f2
Summary:          Javadoc for %{name}
bc91f2
bc91f2
%description javadoc
bc91f2
This package contains the API documentation for %{name}.
bc91f2
bc91f2
%package rulecheck-maven-plugin
bc91f2
Summary:          Maven plugin for checking Byteman rules.
bc91f2
bc91f2
%description rulecheck-maven-plugin
bc91f2
This package contains the Byteman rule check maven plugin.
bc91f2
bc91f2
%package bmunit
bc91f2
Summary:          TestNG and JUnit integration for Byteman.
bc91f2
bc91f2
%description bmunit
bc91f2
The Byteman bmunit jar provides integration of Byteman into
bc91f2
TestNG and JUnit tests.
bc91f2
bc91f2
%package dtest
bc91f2
Summary:          Remote byteman instrumented testing.
bc91f2
bc91f2
%description dtest
bc91f2
The Byteman dtest jar supports instrumentation of test code executed on
bc91f2
remote server hosts and validation of assertions describing the expected
bc91f2
operation of the instrumented methods.
bc91f2
bc91f2
%prep
bc91f2
%setup -q -n byteman-%{version}
bc91f2
bc91f2
# Fix the gid:aid for java_cup
bc91f2
sed -i "s|net.sf.squirrel-sql.thirdparty-non-maven|java_cup|" agent/pom.xml
bc91f2
sed -i "s|java-cup|java_cup|" agent/pom.xml
bc91f2
sed -i "s|net.sf.squirrel-sql.thirdparty-non-maven|java_cup|" tests/pom.xml
bc91f2
sed -i "s|java-cup|java_cup|" tests/pom.xml
bc91f2
bc91f2
# Remove Submit integration test invocations (agent)
bc91f2
%pom_xpath_remove "pom:build/pom:plugins/pom:plugin[pom:artifactId='maven-failsafe-plugin']/pom:executions/pom:execution[pom:id='submit.TestSubmit']" agent
bc91f2
%pom_xpath_remove "pom:build/pom:plugins/pom:plugin[pom:artifactId='maven-failsafe-plugin']/pom:executions/pom:execution[pom:id='submit.TestSubmit.compiled']" agent
bc91f2
%patch1 -p2
bc91f2
%patch2 -p2
bc91f2
bc91f2
# Remove Submit integration test invocations (tests)
bc91f2
%pom_xpath_remove "pom:build/pom:plugins/pom:plugin[pom:artifactId='maven-failsafe-plugin']/pom:executions/pom:execution[pom:id='submit.TestSubmit']" tests
bc91f2
%pom_xpath_remove "pom:build/pom:plugins/pom:plugin[pom:artifactId='maven-failsafe-plugin']/pom:executions/pom:execution[pom:id='submit.TestSubmit.compiled']" tests
bc91f2
bc91f2
# Remove scope=system and systemPath for com.sun:tools
bc91f2
%pom_xpath_remove "pom:profiles/pom:profile/pom:dependencies/pom:dependency[pom:artifactId='tools']/pom:scope" install
bc91f2
%pom_xpath_remove "pom:profiles/pom:profile/pom:dependencies/pom:dependency[pom:artifactId='tools']/pom:systemPath" install
bc91f2
%pom_xpath_remove "pom:profiles/pom:profile/pom:dependencies/pom:dependency[pom:artifactId='tools']/pom:scope" contrib/bmunit
bc91f2
%pom_xpath_remove "pom:profiles/pom:profile/pom:dependencies/pom:dependency[pom:artifactId='tools']/pom:systemPath" contrib/bmunit
bc91f2
bc91f2
# Some tests fail intermittently during builds. Disable them.
bc91f2
%pom_xpath_remove "pom:build/pom:plugins/pom:plugin[pom:artifactId='maven-surefire-plugin']/pom:executions" contrib/bmunit
bc91f2
%pom_xpath_set "pom:build/pom:plugins/pom:plugin[pom:artifactId='maven-surefire-plugin']/pom:configuration" '<skip>true</skip>' contrib/bmunit
bc91f2
bc91f2
# Don't build download, docs modules
bc91f2
%pom_disable_module download
bc91f2
%pom_disable_module docs
bc91f2
bc91f2
# Don't use javadoc plugin, use XMvn for javadocs
bc91f2
%pom_remove_plugin -r :maven-javadoc-plugin
bc91f2
%pom_remove_dep 'org.apache.maven:maven-project' contrib/rulecheck-maven-plugin
bc91f2
%pom_xpath_remove 'pom:execution[pom:id="make-javadoc-assembly"]' byteman
bc91f2
bc91f2
# Put byteman-rulecheck-maven-plugin into a separate package
bc91f2
%mvn_package ":byteman-rulecheck-maven-plugin" rulecheck-maven-plugin
bc91f2
bc91f2
# CNFE being thrown without this for bmunit5 in rawhide and with tests enabled
bc91f2
%pom_add_dep "org.apache.commons:commons-lang3" contrib/bmunit5
bc91f2
# Put byteman-bmunit/byteman-dtest into a separate packages since they
bc91f2
# runtime require junit
bc91f2
%mvn_package ":byteman-bmunit" bmunit
bc91f2
%mvn_package ":byteman-dtest" dtest
bc91f2
bc91f2
%build
bc91f2
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
bc91f2
# Use --xmvn-javadoc so as to avoid maven-javadoc-plugin issue
bc91f2
# (fixed in 3.1.0, fedora has 3.0.1):
bc91f2
# See https://issues.apache.org/jira/browse/MJAVADOC-555
bc91f2
#     https://bugs.openjdk.java.net/browse/JDK-8212233
bc91f2
%mvn_build --xmvn-javadoc
bc91f2
bc91f2
%install
bc91f2
%mvn_install
bc91f2
bc91f2
install -d -m 755 $RPM_BUILD_ROOT%{_bindir}
bc91f2
bc91f2
install -d -m 755 $RPM_BUILD_ROOT%{homedir}
bc91f2
install -d -m 755 $RPM_BUILD_ROOT%{homedir}/lib
bc91f2
install -d -m 755 $RPM_BUILD_ROOT%{bindir}
bc91f2
bc91f2
install -m 755 bin/bmsubmit.sh $RPM_BUILD_ROOT%{bindir}/bmsubmit
bc91f2
install -m 755 bin/bminstall.sh  $RPM_BUILD_ROOT%{bindir}/bminstall
bc91f2
install -m 755 bin/bmjava.sh  $RPM_BUILD_ROOT%{bindir}/bmjava
bc91f2
install -m 755 bin/bmcheck.sh  $RPM_BUILD_ROOT%{bindir}/bmcheck
bc91f2
bc91f2
for f in bmsubmit bmjava bminstall bmcheck; do
bc91f2
cat > $RPM_BUILD_ROOT%{_bindir}/${f} << EOF
bc91f2
#!/bin/sh
bc91f2
bc91f2
export BYTEMAN_HOME=/usr/share/byteman
bc91f2
export JAVA_HOME=/usr/lib/jvm/java
bc91f2
bc91f2
\$BYTEMAN_HOME/bin/${f} \$*
bc91f2
EOF
bc91f2
done
bc91f2
bc91f2
chmod 755 $RPM_BUILD_ROOT%{_bindir}/*
bc91f2
bc91f2
for m in bmunit dtest install sample submit; do
bc91f2
  ln -s %{_javadir}/byteman/byteman-${m}.jar $RPM_BUILD_ROOT%{homedir}/lib/byteman-${m}.jar
bc91f2
done
bc91f2
bc91f2
# Create contrib/jboss-module-system structure since bminstall expects it
bc91f2
# for the -m option.
bc91f2
install -d -m 755 $RPM_BUILD_ROOT%{homedir}/contrib
bc91f2
install -d -m 755 $RPM_BUILD_ROOT%{homedir}/contrib/jboss-modules-system
bc91f2
ln -s %{_javadir}/byteman/byteman-jboss-modules-plugin.jar $RPM_BUILD_ROOT%{homedir}/contrib/jboss-modules-system/byteman-jboss-modules-plugin.jar
bc91f2
bc91f2
ln -s %{_javadir}/byteman/byteman.jar $RPM_BUILD_ROOT%{homedir}/lib/byteman.jar
bc91f2
bc91f2
%files -f .mfiles
bc91f2
%{homedir}/lib/byteman.jar
bc91f2
%{homedir}/lib/byteman-install.jar
bc91f2
%{homedir}/lib/byteman-sample.jar
bc91f2
%{homedir}/lib/byteman-submit.jar
bc91f2
%{homedir}/contrib/*
bc91f2
%{bindir}/*
bc91f2
%{_bindir}/*
bc91f2
%doc README
bc91f2
%license docs/copyright.txt
bc91f2
bc91f2
%files javadoc -f .mfiles-javadoc
bc91f2
%license docs/copyright.txt
bc91f2
bc91f2
%files rulecheck-maven-plugin -f .mfiles-rulecheck-maven-plugin
bc91f2
%license docs/copyright.txt
bc91f2
bc91f2
%files bmunit -f .mfiles-bmunit
bc91f2
%license docs/copyright.txt
bc91f2
%{homedir}/lib/byteman-bmunit.jar
bc91f2
bc91f2
%files dtest -f .mfiles-dtest
bc91f2
%license docs/copyright.txt
bc91f2
%{homedir}/lib/byteman-dtest.jar
bc91f2
bc91f2
%changelog
bc91f2
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 4.0.16-2
bc91f2
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
bc91f2
  Related: rhbz#1991688
bc91f2
bc91f2
* Fri Jun 18 2021 Severin Gehwolf <sgehwolf@redhat.com> - 4.0.16-1
bc91f2
- Update to latest upstream 4.0.16 release for JDK 17 support.
bc91f2
- Drop not-needed jboss-modules BR.
bc91f2
bc91f2
* Thu Apr 15 2021 Mohan Boddu <mboddu@redhat.com> - 4.0.11-5
bc91f2
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
bc91f2
bc91f2
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 4.0.11-4
bc91f2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
bc91f2
bc91f2
* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 4.0.11-3
bc91f2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
bc91f2
bc91f2
* Fri Jul 10 2020 Jiri Vanek <jvanek@redhat.com> - 4.0.11-2
bc91f2
- Rebuilt for JDK-11, see https://fedoraproject.org/wiki/Changes/Java11
bc91f2
bc91f2
* Tue Mar 03 2020 Jayashree Huttanagoudar <jhuttana@redhat.com> - 4.0.11-1
bc91f2
- Upgrated to latest upstream version 4.0.11
bc91f2
- Added a patch to fix rpm build issue caused due to misconfiguration in upstream
bc91f2
- Added required additional plugins required for build
bc91f2
bc91f2
* Tue Jan 28 2020 Severin Gehwolf <sgehwolf@redhat.com> - 4.0.5-5
bc91f2
- Drop not needed BR jarjar. Fixes FTBFS.
bc91f2
bc91f2
* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 4.0.5-5
bc91f2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
bc91f2
bc91f2
* Wed Jul 24 2019 Fedora Release Engineering <releng@fedoraproject.org> - 4.0.5-4
bc91f2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
bc91f2
bc91f2
* Mon May 06 2019 Severin Gehwolf <sgehwolf@redhat.com> - 4.0.5-3
bc91f2
- Use XMvn javadoc so as to work-around maven-javadoc-plugin issue.
bc91f2
- Fixes FTBFS.
bc91f2
bc91f2
* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 4.0.5-2
bc91f2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
bc91f2
bc91f2
* Wed Nov 21 2018 Severin Gehwolf <sgehwolf@redhat.com> - 4.0.5-1
bc91f2
- Update to latest upstream 4.0.5 release.
bc91f2
bc91f2
* Thu Jul 12 2018 Fedora Release Engineering <releng@fedoraproject.org> - 4.0.4-2
bc91f2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
bc91f2
bc91f2
* Tue Jul 10 2018 Severin Gehwolf <sgehwolf@redhat.com> - 4.0.4-1
bc91f2
- Update to latest upstream 4.0.4 release.
bc91f2
- Split junit-dependent packages into sub-packages:
bc91f2
  byteman-dtest, byteman-bmunit
bc91f2
- Fix automatically generated requirements:
bc91f2
  - ASM is BR-only and bundled.
bc91f2
  - java-headless >= 1:1.9 would get generated, but byteman 4.x
bc91f2
    runs on JDK 8 too (would even work for JDK 6)
bc91f2
bc91f2
* Thu Jul 05 2018 Severin Gehwolf <sgehwolf@redhat.com> - 4.0.3-2
bc91f2
- Don't use maven-javadoc-plugin. Use XMvn instead.
bc91f2
bc91f2
* Tue Jul 03 2018 Severin Gehwolf <sgehwolf@redhat.com> - 4.0.3-1
bc91f2
- Update to latest upstream 4.0.3 release.
bc91f2
bc91f2
* Fri Apr 27 2018 Severin Gehwolf <sgehwolf@redhat.com> - 4.0.2-1
bc91f2
- Update to latest upstream 4.0.2 release.
bc91f2
- Adds support for modular JDKs.
bc91f2
bc91f2
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.6-5
bc91f2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
bc91f2
bc91f2
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.6-4
bc91f2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
bc91f2
bc91f2
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.6-3
bc91f2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
bc91f2
bc91f2
* Fri Dec 09 2016 Severin Gehwolf <sgehwolf@redhat.com> - 3.0.6-2
bc91f2
- Add BRs, maven-plugin-bundle, maven-source-plugin and
bc91f2
  maven-plugin-plugin, fixing FTBFS.
bc91f2
- Resolves: RHBZ#1402998
bc91f2
bc91f2
* Mon Jun 13 2016 Severin Gehwolf <sgehwolf@redhat.com> - 3.0.6-1
bc91f2
- Update to latest upstream release.
bc91f2
bc91f2
* Mon Mar 14 2016 Severin Gehwolf <sgehwolf@redhat.com> - 3.0.4-2
bc91f2
- Enable some tests during build
bc91f2
- Fix generated requires by filtering requires for bundled libs.
bc91f2
- Split maven plugin into separate package.
bc91f2
bc91f2
* Thu Feb 18 2016 Severin Gehwolf <sgehwolf@redhat.com> - 3.0.4-1
bc91f2
- Update to latest upstream 3.0.4 release.
bc91f2
bc91f2
* Wed Feb 03 2016 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.4.1-8
bc91f2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
bc91f2
bc91f2
* Thu Aug 06 2015 gil cattaneo <puntogil@libero.it> 2.1.4.1-7
bc91f2
- Fix FTBFS rhbz#1239392
bc91f2
- Remove duplicate files
bc91f2
- Introduce license macro
bc91f2
bc91f2
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.1.4.1-6
bc91f2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
bc91f2
bc91f2
* Fri Feb 27 2015 Michal Srb <msrb@redhat.com> - 2.1.4.1-5
bc91f2
- Fix FTBFS
bc91f2
- Rebuild to generate new metadata
bc91f2
bc91f2
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.1.4.1-4
bc91f2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
bc91f2
bc91f2
* Fri Apr 18 2014 Marek Goldmann <mgoldman@redhat.com> - 2.1.4.1-3
bc91f2
- Rebuilding for objectweb-asm update, RHBZ#1083570
bc91f2
bc91f2
* Fri Mar 28 2014 Michael Simacek <msimacek@redhat.com> - 2.1.4.1-2
bc91f2
- Use Requires: java-headless rebuild (#1067528)
bc91f2
bc91f2
* Fri Feb 14 2014 Marek Goldmann <mgoldman@redhat.com> - 2.1.4.1-1
bc91f2
- Upstream release 2.1.4.1
bc91f2
bc91f2
* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.1.2-2
bc91f2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
bc91f2
bc91f2
* Thu Jul 04 2013 Marek Goldmann <mgoldman@redhat.com> - 2.1.2-1
bc91f2
- Upstream release 2.1.2
bc91f2
bc91f2
* Wed Jun  5 2013 Mikolaj Izdebski <mizdebsk@redhat.com> - 2.0.4-5
bc91f2
- Remove tools.jar from dependencyManagement
bc91f2
bc91f2
* Wed May 29 2013 Marek Goldmann <mgoldman@redhat.com> - 2.0.4-4
bc91f2
- New guidelines
bc91f2
bc91f2
* Thu Apr 25 2013 Marek Goldmann <mgoldman@redhat.com> - 2.0.4-3
bc91f2
- Fixes to the launch scripts
bc91f2
bc91f2
* Wed Apr 24 2013 Marek Goldmann <mgoldman@redhat.com> - 2.0.4-2
bc91f2
- Added bmsubmit, bminstall and bmjava scripts, RHBZ#951560
bc91f2
bc91f2
* Thu Feb 21 2013 Marek Goldmann <mgoldman@redhat.com> - 2.0.4-1
bc91f2
- Upstream release 2.0.4
bc91f2
- Switched to Maven
bc91f2
- Bundling java_cup and objectweb-asm (fpc#226)
bc91f2
bc91f2
* Wed Feb 13 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.5.2-6
bc91f2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
bc91f2
bc91f2
* Wed Jul 18 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.5.2-5
bc91f2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
bc91f2
bc91f2
* Thu Jan 12 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.5.2-4
bc91f2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
bc91f2
bc91f2
* Tue Sep 20 2011 Marek Goldmann <mgoldman@redhat.com> 1.5.2-3
bc91f2
- Removed binary files from src.rpm
bc91f2
bc91f2
* Mon Sep 19 2011 Marek Goldmann <mgoldman@redhat.com> 1.5.2-2
bc91f2
- Cleaned spec file
bc91f2
bc91f2
* Wed Jul 27 2011 Marek Goldmann <mgoldman@redhat.com> 1.5.2-1
bc91f2
- Upstream release: 1.5.2
bc91f2
bc91f2
* Thu Jul 21 2011 Marek Goldmann <mgoldman@redhat.com> 1.5.1-1
bc91f2
- Initial packaging
bc91f2