diff --git a/.gitignore b/.gitignore index acc83fa..d9c4a38 100644 --- a/.gitignore +++ b/.gitignore @@ -1,15 +1,2 @@ /byteman-1.5.2-full-clean.tar.gz /byteman-2.0.4.tar.xz -/2.1.2.tar.gz -/373601b4e608ea622b2fec947824b99cd0edb124.tar.gz -/3.0.4.tar.gz -/byteman-3.0.4/ -/3.0.6.tar.gz -/byteman-3.0.6/ -/4.0.2.tar.gz -/4.0.3.tar.gz -/4.0.4.tar.gz -/4.0.5.tar.gz -/4.0.15.tar.gz -/4.0.16.tar.gz -/4.0.26.tar.gz diff --git a/byteman.spec b/byteman.spec index 6cbe24c..fd6ecb7 100644 --- a/byteman.spec +++ b/byteman.spec @@ -1,62 +1,45 @@ -# 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.26 -Release: 1%{?dist} +Version: 2.0.4 +Release: 3%{?dist} Summary: Java agent-based bytecode injection tool -# Automatically converted from old format: LGPLv2+ - review is highly recommended. -License: LicenseRef-Callaway-LGPLv2+ +Group: Development/Libraries +License: LGPLv2+ URL: http://www.jboss.org/byteman -# wget -O 4.0.16.tar.gz https://github.com/bytemanproject/byteman/archive/4.0.16.tar.gz -Source0: https://github.com/bytemanproject/byteman/archive/%{version}.tar.gz + +# git clone git://github.com/bytemanproject/byteman.git +# cd byteman/ && git archive --format=tar --prefix=byteman-2.0.4/ 2.0.4 | xz > byteman-2.0.4.tar.xz +Source0: byteman-%{version}.tar.xz BuildArch: noarch -ExclusiveArch: %{java_arches} noarch -# Byteman 4.x requires JDK 9+ to build. Require JDK 10 explicitly. -BuildRequires: java-25-devel >= 1:11 -BuildRequires: maven-local-openjdk25 +BuildRequires: jpackage-utils +BuildRequires: javapackages-tools +BuildRequires: java-devel +BuildRequires: maven-local BuildRequires: maven-shade-plugin -BuildRequires: maven-source-plugin -BuildRequires: maven-plugin-plugin -BuildRequires: maven-bundle-plugin -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-surefire-provider-junit4 BuildRequires: maven-verifier-plugin -BuildRequires: maven-dependency-plugin BuildRequires: java_cup +BuildRequires: jarjar BuildRequires: objectweb-asm -BuildRequires: junit -BuildRequires: junit5 +BuildRequires: junit4 BuildRequires: testng -Provides: bundled(objectweb-asm) = 9.1 -Provides: bundled(java_cup) = 1:0.11b-17 -# We are filtering java-headless >= 1:1.9 requirement. Add -# JDK 8 requirement here explicitly which shouldn't match the filter. -Requires: java-25-headless >= 1:1.8 +Requires: jpackage-utils +Requires: java-devel -# Related pieces removed via pom_xpath_remove macros -Patch1: remove_submit_integration_test_verification.patch -Patch2: testng7_port.patch +# Bundling +#BuildRequires: java_cup = 1:0.11a-12 +#BuildRequires: objectweb-asm = 0:3.3.1-7 +Provides: bundled(java_cup) = 1:0.11a-12 +Provides: bundled(objectweb-asm) = 0:3.3.1-7 %description Byteman is a tool which simplifies tracing and testing of Java programs. @@ -70,97 +53,27 @@ 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} +Summary: Javadocs for %{name} +Group: Documentation +Requires: jpackage-utils %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} +%setup -q # 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 -%patch -P1 -p2 -%patch -P2 -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" 'true' contrib/bmunit - -# source/target 1.6 is not supported by 17; default is now 1.8 -%pom_xpath_remove "pom:build/pom:plugins/pom:plugin[pom:artifactId='maven-compiler-plugin']/pom:configuration/pom:source" pom.xml -%pom_xpath_remove "pom:build/pom:plugins/pom:plugin[pom:artifactId='maven-compiler-plugin']/pom:configuration/pom:target" pom.xml - -# Don't build download, docs modules -%pom_disable_module download - - -# Don't use javadoc plugin, use XMvn for javadocs -%pom_remove_plugin -r :maven-javadoc-plugin -%pom_remove_plugin -r :central-publishing-maven-plugin -%pom_remove_dep 'org.apache.maven:maven-project' contrib/rulecheck-maven-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 - -# CNFE being thrown without this for bmunit5 in rawhide and with tests enabled -%pom_add_dep "org.apache.commons:commons-lang3" contrib/bmunit5 -# 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-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 -f +%mvn_build %install -%mvn_install - install -d -m 755 $RPM_BUILD_ROOT%{_bindir} +install -d -m 755 $RPM_BUILD_ROOT%{_javadir}/%{name} +install -d -m 755 $RPM_BUILD_ROOT%{_mavenpomdir} install -d -m 755 $RPM_BUILD_ROOT%{homedir} install -d -m 755 $RPM_BUILD_ROOT%{homedir}/lib @@ -184,42 +97,84 @@ done chmod 755 $RPM_BUILD_ROOT%{_bindir}/* +for m in install sample submit; do + # JAR + install -pm 644 ${m}/target/%{name}-${m}-%{version}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}/%{name}-${m}.jar + # POM + install -pm 644 ${m}/pom.xml $RPM_BUILD_ROOT%{_mavenpomdir}/JPP.%{name}-%{name}-${m}.pom + # DEPMAP + %add_maven_depmap JPP.%{name}-%{name}-${m}.pom %{name}/%{name}-${m}.jar +done + +# Contrib +for m in bmunit dtest; do + # JAR + install -pm 644 contrib/${m}/target/%{name}-${m}-%{version}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}/%{name}-${m}.jar + # POM + install -pm 644 contrib/${m}/pom.xml $RPM_BUILD_ROOT%{_mavenpomdir}/JPP.%{name}-%{name}-${m}.pom + # DEPMAP + %add_maven_depmap JPP.%{name}-%{name}-${m}.pom %{name}/%{name}-${m}.jar +done + +# JAR +install -pm 644 agent/target/%{name}-%{version}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}/%{name}.jar +# POM +install -pm 644 agent/pom.xml $RPM_BUILD_ROOT%{_mavenpomdir}/JPP.%{name}-%{name}.pom +# DEPMAP +%add_maven_depmap JPP.%{name}-%{name}.pom %{name}/%{name}.jar + +# APIDOCS +install -d -m 755 $RPM_BUILD_ROOT%{_javadocdir}/%{name} +cp -rp target/site/apidocs/* $RPM_BUILD_ROOT%{_javadocdir}/%{name} + 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 -# Create contrib/jboss-module-system structure since bminstall expects it -# for the -m option. -install -d -m 755 $RPM_BUILD_ROOT%{homedir}/contrib -install -d -m 755 $RPM_BUILD_ROOT%{homedir}/contrib/jboss-modules-system -ln -s %{_javadir}/byteman/byteman-jboss-modules-plugin.jar $RPM_BUILD_ROOT%{homedir}/contrib/jboss-modules-system/byteman-jboss-modules-plugin.jar - ln -s %{_javadir}/byteman/byteman.jar $RPM_BUILD_ROOT%{homedir}/lib/byteman.jar -%files -f .mfiles -%{homedir}/lib/byteman.jar -%{homedir}/lib/byteman-install.jar -%{homedir}/lib/byteman-sample.jar -%{homedir}/lib/byteman-submit.jar -%{homedir}/contrib/* -%{bindir}/* +%files +%{_mavenpomdir}/* +%{_mavendepmapfragdir}/* +%{homedir}/* %{_bindir}/* -%doc README -%license docs/copyright.txt +%{_javadir}/* +%doc README docs/ProgrammersGuide.pdf 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 -%{homedir}/lib/byteman-bmunit.jar - -%files dtest -f .mfiles-dtest -%license docs/copyright.txt -%{homedir}/lib/byteman-dtest.jar +%files javadoc +%{_javadocdir}/%{name} +%doc docs/copyright.txt %changelog -%autochangelog +* Thu Apr 25 2013 Marek Goldmann - 2.0.4-3 +- Fixes to the launch scripts + +* Wed Apr 24 2013 Marek Goldmann - 2.0.4-2 +- Added bmsubmit, bminstall and bmjava scripts, RHBZ#951560 + +* Thu Feb 21 2013 Marek Goldmann - 2.0.4-1 +- Upstream release 2.0.4 +- Switched to Maven +- Bundling java_cup and objectweb-asm (fpc#226) + +* Wed Feb 13 2013 Fedora Release Engineering - 1.5.2-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Wed Jul 18 2012 Fedora Release Engineering - 1.5.2-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Thu Jan 12 2012 Fedora Release Engineering - 1.5.2-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Tue Sep 20 2011 Marek Goldmann 1.5.2-3 +- Removed binary files from src.rpm + +* Mon Sep 19 2011 Marek Goldmann 1.5.2-2 +- Cleaned spec file + +* Wed Jul 27 2011 Marek Goldmann 1.5.2-1 +- Upstream release: 1.5.2 + +* Thu Jul 21 2011 Marek Goldmann 1.5.1-1 +- Initial packaging + diff --git a/remove_submit_integration_test_verification.patch b/remove_submit_integration_test_verification.patch deleted file mode 100644 index dae9507..0000000 --- a/remove_submit_integration_test_verification.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff --git a/byteman-4.0.2/agent/verification.xml b/byteman-4.0.2/agent/verification.xml -index f530cfe..52ece06 100644 ---- a/byteman-4.0.2/agent/verification.xml -+++ b/byteman-4.0.2/agent/verification.xml -@@ -171,9 +171,5 @@ - target/failsafe-reports/org.jboss.byteman.tests.misc.TestThrowBinding.txt - - -- -- target/failsafe-reports/org.jboss.byteman.tests.submit.TestSubmit.txt -- -- - - diff --git a/sources b/sources index 1a074db..bae5cc1 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (4.0.26.tar.gz) = 06c8bf688d237d8dbac1e4558a8e2916f1212d2746d81a64e8bc44f9074f5b1c205bb98ac3a8e835f0c8b225df665e40c93c8b60ff5ff77f6ce8272c25679d76 +75bf4c1694817939f2f6f1e7d9df8a37 byteman-2.0.4.tar.xz diff --git a/testng7_port.patch b/testng7_port.patch deleted file mode 100644 index 16e43e9..0000000 --- a/testng7_port.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff --git a/byteman-4.0.15/contrib/bmunit/src/org/jboss/byteman/contrib/bmunit/BMNGListener.java b/byteman-4.0.15/contrib/bmunit/src/org/jboss/byteman/contrib/bmunit/BMNGListener.java -index 2f784bc..9e4fec9 100644 ---- a/byteman-4.0.15/contrib/bmunit/src/org/jboss/byteman/contrib/bmunit/BMNGListener.java -+++ b/byteman-4.0.15/contrib/bmunit/src/org/jboss/byteman/contrib/bmunit/BMNGListener.java -@@ -61,7 +61,7 @@ public class BMNGListener extends BMNGAbstractRunner implements IInvokedMethodLi - } - - public void beforeInvocation(IInvokedMethod method, ITestResult testResult) { -- Method javaMethod = method.getTestMethod().getMethod(); -+ Method javaMethod = method.getTestMethod().getConstructorOrMethod().getMethod(); - Class clazz = javaMethod.getDeclaringClass(); - if (!checkBMNGListener(clazz)) { - return; -@@ -81,7 +81,7 @@ public class BMNGListener extends BMNGAbstractRunner implements IInvokedMethodLi - } - - public void afterInvocation(IInvokedMethod method, ITestResult testResult) { -- Method javaMethod = method.getTestMethod().getMethod(); -+ Method javaMethod = method.getTestMethod().getConstructorOrMethod().getMethod(); - Class clazz = javaMethod.getDeclaringClass(); - if (!checkBMNGListener(clazz)) { - return; diff --git a/tests/smoke/test-smoke.sh b/tests/smoke/test-smoke.sh deleted file mode 100644 index 24e4322..0000000 --- a/tests/smoke/test-smoke.sh +++ /dev/null @@ -1,147 +0,0 @@ -#!/bin/bash -# -set -e - -############################################################## -# -# Test 1: bmjava -# -############################################################## -test1_dir=$(mktemp -d) -pushd $test1_dir -##### -## The Java program under test (via bmjava) -##### -cat > HelloWait.java < trace1.btm < out1.log -grep -q "argument was: World!" out1.log -grep -q "Hello bar" out1.log -output=$(tail -n1 out1.log) -if [ ! "${output}_" == "Hello bar_" ]; then - echo Test FAILED! - exit 1 -fi - -echo Test 1 PASSED! - -popd -rm -rf $test1_dir - - -############################################################## -# -# Test 2: bminstall + bmsubmit -# -############################################################## -test2_dir=$(mktemp -d) -pushd $test2_dir -##### -## The Java program under test -##### -cat > HelloWait.java < out2.log 2>&1 & -pid_of_java=$$ -echo "Forked java process with pid $pid_of_java" -sleep 2 -##### -## The byteman rule(s) (used via bmsubmit) -##### -cat > change_arg.btm < throw_excptn.btm <