[stapler] Update to upstream version 1.223
by Michal Srb
commit 2b7724a44f4783dde49969cdd65a79759f4fae69
Author: Michal Srb <msrb(a)redhat.com>
Date: Fri Nov 29 07:10:03 2013 +0100
Update to upstream version 1.223
.gitignore | 1 +
sources | 2 +-
stapler.spec | 14 +++++++++++---
3 files changed, 13 insertions(+), 4 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 50575f6..76c826c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,4 @@
/stapler-1.218-clean.tar.gz
/stapler-1.221-clean.tar.gz
/stapler-1.222-clean.tar.gz
+/stapler-1.223-clean.tar.gz
diff --git a/sources b/sources
index 0246b63..f52d3c8 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
3b83ef96387f14655fc854ddc3c6bd57 LICENSE-2.0.txt
-4f0e39a8d9df648e47429362adeae47b stapler-1.222-clean.tar.gz
+421f7796b4e4126e7374c4e864170c15 stapler-1.223-clean.tar.gz
diff --git a/stapler.spec b/stapler.spec
index db06dfe..07f8c4b 100644
--- a/stapler.spec
+++ b/stapler.spec
@@ -1,5 +1,5 @@
Name: stapler
-Version: 1.222
+Version: 1.223
Release: 1%{?dist}
Summary: Stapler Java web framework
@@ -112,7 +112,6 @@ cp %{SOURCE1} LICENSE
# Missing org.jruby-rack:jruby-rack
%pom_disable_module jruby
-
# Missing org.zeroturnaround:jr-sdk
%pom_disable_module jrebel
@@ -136,6 +135,8 @@ cp %{SOURCE1} LICENSE
# Provided by JDK
%pom_remove_dep :javax.annotation-api core
+# Unavailable
+%pom_remove_dep org.codehaus.mojo:extra-enforcer-rules
# Annotations removed by patch1, we don't need this anymore
%pom_remove_dep ":jellydoc-annotations" jelly
@@ -148,8 +149,12 @@ cp %{SOURCE1} LICENSE
%pom_xpath_remove "pom:extension[pom:artifactId[text()='wagon-webdav']]"
%pom_xpath_remove "pom:extension[pom:artifactId[text()='wagon-gitsite']]"
+# We don't need this
+%pom_remove_plugin :animal-sniffer-maven-plugin
+# No need for this plugin without org.codehaus.mojo:extra-enforcer-rules
+%pom_remove_plugin :maven-enforcer-plugin
+
# We don't have these plugins
-%pom_remove_plugin :fix1600
%pom_remove_plugin :maven-jellydoc-plugin
# Replacement for unbundled classes
@@ -182,6 +187,9 @@ cp %{SOURCE1} LICENSE
%changelog
+* Fri Nov 29 2013 Michal Srb <msrb(a)redhat.com> - 1.223-1
+- Update to upstream version 1.223
+
* Wed Oct 30 2013 Michal Srb <msrb(a)redhat.com> - 1.222-1
- Update to upstream version 1.222
10 years, 5 months
[javapackages] [doc] Add few words about JARs
by Michael Šimáček
commit 384035ea15bfce501679c4d964d1364b1833360f
Author: Michael Simacek <msimacek(a)redhat.com>
Date: Wed Nov 27 15:48:11 2013 +0100
[doc] Add few words about JARs
More detailed explanation of JAR purpose and contents.
Moved "compiling project" section a bit up.
doc/introduction_for_packagers.txt | 84 ++++++++++++++++++++++--------------
1 files changed, 52 insertions(+), 32 deletions(-)
---
diff --git a/doc/introduction_for_packagers.txt b/doc/introduction_for_packagers.txt
index 09b63ed..d757197 100644
--- a/doc/introduction_for_packagers.txt
+++ b/doc/introduction_for_packagers.txt
@@ -2,12 +2,7 @@ Java is a programming language which is usually compiled into bytecode for JVM
(Java Virtual Machine). For more details about the JVM and bytecode
specification see
link:http://docs.oracle.com/javase/specs/jvms/se7/html/index.html[JVM
-documentation]. Resulting bytecode is then assembled into zip files with
-specific layout and additional metadata. Most commonly these special zip files
-have `.jar` suffix, but other variations exist. These files have their format
-specified in the
-link:http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html[JAR File
-Specification].
+documentation].
==== Example Java Project
@@ -79,6 +74,57 @@ Environment setup consists of two main parts:
- Telling JVM which Java class contains `main()` method
- Adding required JAR files on JVM classpath
+.Compiling our project
+The sample project can be compiled to a bytecode by Java compiler. Java
+compiler can be typically invoked from command line by command `javac`.
+
+[source,shell]
+------
+$ javac `find . -name *.java`
+------
+
+For every `.java` file corresponding `.class` file will be created. The
+`.class` files contain Java bytecode which is meant to be executed on
+JVM.
+
+One could put invocation of `javac` to Makefile and simplify the
+compilation a bit. It might be sufficient for such a simple project, but
+it would quickly become hard to build more complex projects with this
+approach. Java world knows several high-level build systems which can
+highly simplify building of Java projects. Among the others, probably
+most known are http://maven.apache.org/[Apache Maven],
+http://ant.apache.org/[Apache Ant] and http://www.gradle.org/[Gradle].
+
+[TIP]
+======
+See also <<maven,Maven>> and <<ant,Ant>> sections.
+======
+
+.JAR files
+Having our application split across many `.class` files wouldn't be very
+practical, so those `.class` files are assembled into ZIP files with
+specific layout called JAR files. Most commonly these special ZIP files
+have `.jar` suffix, but other variations exist (`.war`, `.ear`). They
+contain:
+
+ * Compiled bytecode of our project
+ * Additional metadata stored in `META-INF/MANIFEST.MF` file
+ * Resource files such as images or localisation data
+ * Optionaly the source code of our project (called source JAR then)
+
+They can also contain additional bundled software which is something
+we don't want to have in packages. You can inspect the contents of given
+JAR file by extracting it. That can be done with following command:
+
+[source,shell]
+------
+jar xf something.jar
+------
+
+The detailed description of JAR file format is in the
+link:http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html[JAR File
+Specification].
+
.Classpath
The classpath is a way of telling JVM where to look for user classes
@@ -114,32 +160,6 @@ all Java applications have to use wrapper shell scripts to setup the environment
before invoking the JVM and running the application itself. Note that this is
not necessary for libraries.
-.Compiling our project
-The sample project can be compiled to a bytecode by Java compiler. Java
-compiler can be typically invoked from command line by command `javac`.
-
-[source,shell]
-------
-$ javac `find . -name *.java`
-------
-
-For every `.java` file corresponding `.class` file will be created. The
-`.class` files contain Java bytecode which is meant to be executed on
-JVM.
-
-One could put invocation of `javac` to Makefile and simplify the
-compilation a bit. It might be sufficient for such a simple project, but
-it would quickly become hard to build more complex projects with this
-approach. Java world knows several high-level build systems which can
-highly simplify building of Java projects. Among the others, probably
-most known are http://maven.apache.org/[Apache Maven],
-http://ant.apache.org/[Apache Ant] and http://www.gradle.org/[Gradle].
-
-[TIP]
-======
-See also <<maven,Maven>> and <<ant,Ant>> sections.
-======
-
==== Build System Identification
Build system used by upstream can be usually identified by looking at
10 years, 5 months
[bytecode-compatibility-transformer] Update to upstream version 1.4
by Michal Srb
commit a01ca0e8fe147af02a7d5c0e2cf310a21ebc78ed
Author: Michal Srb <msrb(a)redhat.com>
Date: Wed Nov 27 13:46:43 2013 +0100
Update to upstream version 1.4
.gitignore | 1 +
0001-Port-to-asm-asm.patch | 42 +++++++++++++++++++++++++-----
bytecode-compatibility-transformer.spec | 6 +++-
sources | 2 +-
4 files changed, 42 insertions(+), 9 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 69ee3b5..0821ab2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
/bytecode-compatibility-transformer-1.3.zip
/LICENSE.txt
+/bytecode-compatibility-transformer-1.4.zip
diff --git a/0001-Port-to-asm-asm.patch b/0001-Port-to-asm-asm.patch
index 65dfa81..77cafc6 100644
--- a/0001-Port-to-asm-asm.patch
+++ b/0001-Port-to-asm-asm.patch
@@ -1,18 +1,19 @@
-From 6ec9eb40783373d29ffec0668a38270adf9a29fe Mon Sep 17 00:00:00 2001
+From 3ada0e7f61fcf7bdc00f63c31ec044e878639b30 Mon Sep 17 00:00:00 2001
From: Michal Srb <msrb(a)redhat.com>
-Date: Tue, 1 Oct 2013 10:03:09 +0200
+Date: Wed, 27 Nov 2013 13:42:52 +0100
Subject: [PATCH] Port to asm:asm
---
src/main/java/org/jenkinsci/bytecode/AdaptField.java | 8 ++++----
+ .../org/jenkinsci/bytecode/ClassRewritingContext.java | 12 ++++++------
src/main/java/org/jenkinsci/bytecode/Kind.java | 2 +-
src/main/java/org/jenkinsci/bytecode/MemberAdapter.java | 4 ++--
.../java/org/jenkinsci/bytecode/MemberTransformSpec.java | 8 ++++----
src/main/java/org/jenkinsci/bytecode/Transformer.java | 16 ++++++++--------
- 5 files changed, 19 insertions(+), 19 deletions(-)
+ 6 files changed, 25 insertions(+), 25 deletions(-)
diff --git a/src/main/java/org/jenkinsci/bytecode/AdaptField.java b/src/main/java/org/jenkinsci/bytecode/AdaptField.java
-index fe85af8..cb1fea8 100644
+index 5e8a1d6..4701f6f 100644
--- a/src/main/java/org/jenkinsci/bytecode/AdaptField.java
+++ b/src/main/java/org/jenkinsci/bytecode/AdaptField.java
@@ -1,8 +1,8 @@
@@ -37,6 +38,33 @@ index fe85af8..cb1fea8 100644
/**
* Rewrites a field reference by adapting the type of the field.
+diff --git a/src/main/java/org/jenkinsci/bytecode/ClassRewritingContext.java b/src/main/java/org/jenkinsci/bytecode/ClassRewritingContext.java
+index ca0a0a6..2277fac 100644
+--- a/src/main/java/org/jenkinsci/bytecode/ClassRewritingContext.java
++++ b/src/main/java/org/jenkinsci/bytecode/ClassRewritingContext.java
+@@ -1,16 +1,16 @@
+ package org.jenkinsci.bytecode;
+
+-import org.kohsuke.asm3.ClassVisitor;
+-import org.kohsuke.asm3.Label;
+-import org.kohsuke.asm3.MethodVisitor;
+-import org.kohsuke.asm3.Opcodes;
+-import org.kohsuke.asm3.Type;
++import org.objectweb.asm.ClassVisitor;
++import org.objectweb.asm.Label;
++import org.objectweb.asm.MethodVisitor;
++import org.objectweb.asm.Opcodes;
++import org.objectweb.asm.Type;
+
+ import java.util.HashMap;
+ import java.util.Map;
+ import java.util.Map.Entry;
+
+-import static org.kohsuke.asm3.Opcodes.*;
++import static org.objectweb.asm.Opcodes.*;
+
+ /**
+ * Remembers what class is being rewritten and what helper methods need to be generated into this class.
diff --git a/src/main/java/org/jenkinsci/bytecode/Kind.java b/src/main/java/org/jenkinsci/bytecode/Kind.java
index e6edd62..43f5f7b 100644
--- a/src/main/java/org/jenkinsci/bytecode/Kind.java
@@ -50,7 +78,7 @@ index e6edd62..43f5f7b 100644
/**
* Rewriting a method reference and a field reference takes a very similar code path,
diff --git a/src/main/java/org/jenkinsci/bytecode/MemberAdapter.java b/src/main/java/org/jenkinsci/bytecode/MemberAdapter.java
-index c7f3027..4b9393e 100644
+index 1d1caaa..aa3a6fb 100644
--- a/src/main/java/org/jenkinsci/bytecode/MemberAdapter.java
+++ b/src/main/java/org/jenkinsci/bytecode/MemberAdapter.java
@@ -1,7 +1,7 @@
@@ -64,7 +92,7 @@ index c7f3027..4b9393e 100644
import java.lang.reflect.Member;
diff --git a/src/main/java/org/jenkinsci/bytecode/MemberTransformSpec.java b/src/main/java/org/jenkinsci/bytecode/MemberTransformSpec.java
-index 8854e1b..6f171a9 100644
+index ce99e85..02d5245 100644
--- a/src/main/java/org/jenkinsci/bytecode/MemberTransformSpec.java
+++ b/src/main/java/org/jenkinsci/bytecode/MemberTransformSpec.java
@@ -1,15 +1,15 @@
@@ -88,7 +116,7 @@ index 8854e1b..6f171a9 100644
/**
* All the adapters of {@linkplain #kind a specific member type} keyed by their name and descriptor.
diff --git a/src/main/java/org/jenkinsci/bytecode/Transformer.java b/src/main/java/org/jenkinsci/bytecode/Transformer.java
-index 6a5bc77..6dccc01 100644
+index aaa6a59..12dbf25 100644
--- a/src/main/java/org/jenkinsci/bytecode/Transformer.java
+++ b/src/main/java/org/jenkinsci/bytecode/Transformer.java
@@ -1,12 +1,12 @@
diff --git a/bytecode-compatibility-transformer.spec b/bytecode-compatibility-transformer.spec
index c74d279..3ee7833 100644
--- a/bytecode-compatibility-transformer.spec
+++ b/bytecode-compatibility-transformer.spec
@@ -1,5 +1,5 @@
Name: bytecode-compatibility-transformer
-Version: 1.3
+Version: 1.4
Release: 1%{?dist}
Summary: Evolve modular codebase without losing compatibility
@@ -21,6 +21,7 @@ BuildRequires: mvn(org.apache.ant:ant)
BuildRequires: mvn(org.apache.maven.plugins:maven-antrun-plugin)
BuildRequires: mvn(org.jenkins-ci:annotation-indexer)
BuildRequires: mvn(org.jenkins-ci:constant-pool-scanner)
+BuildRequires: mvn(org.apache.maven.plugins:maven-dependency-plugin)
BuildArch: noarch
@@ -60,6 +61,9 @@ cp %{SOURCE1} .
%doc LICENSE.txt
%changelog
+* Wed Nov 27 2013 Michal Srb <msrb(a)redhat.com> - 1.4-1
+- Update to upstream version 1.4
+
* Tue Oct 01 2013 Michal Srb <msrb(a)redhat.com> - 1.3-1
- Initial packaging
diff --git a/sources b/sources
index 1c86834..e73e2a1 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
-4426574ebb180317fdcda817e1dd9932 bytecode-compatibility-transformer-1.3.zip
1d87d0760b5698d0f43a61ba9261ea10 LICENSE.txt
+ecaecab0274664004b6b356ca293826f bytecode-compatibility-transformer-1.4.zip
10 years, 5 months
[javapackages] [doc] more information about spec file contents
by Michael Šimáček
commit d0396cbf694c0be4770291afbea7c3adf2d38627
Author: Michael Simacek <msimacek(a)redhat.com>
Date: Mon Nov 25 12:55:05 2013 +0100
[doc] more information about spec file contents
doc/introduction_for_developers.txt | 81 ++++++++++++++++++++++++++---------
1 files changed, 60 insertions(+), 21 deletions(-)
---
diff --git a/doc/introduction_for_developers.txt b/doc/introduction_for_developers.txt
index bed38f3..0b1aa30 100644
--- a/doc/introduction_for_developers.txt
+++ b/doc/introduction_for_developers.txt
@@ -50,15 +50,63 @@ include::rpm_project/helloworld.spec[]
RPM `spec` files contain several basic sections:
- * header containing package metadata
- * %prep section used for source unpacking, patching and steps to prepare for
- building
- * %build section containing compilation instructions such as Maven or Ant
- invocation
- * %install section used to preparing filesystem layout inside directory
- * %files section containing list of files to be included in the binary RPM itself
- * %changelog containing RPM changelog with prescribed format used mostly to
- document changes to spec file (not upstream)
+Header, which contains: ::
+ * Package metadata such as its name, version, release,
+ license...
+ * A `Summary` with basic one-line summary of package contents
+ * Package source URLs denoted with `Source0` to `SourceN` directives
+ ** Source files can then be referenced by `%SOURCE0` to
+ `%SOURCEn`, which expand to actual paths to given files
+ ** In practice, the source URL shouldn't point to a file in our
+ filesystem, but to an upstream release on the web
+ * Patches - using `Patch0` to `PatchN`
+ * Project dependencies
+ ** Build dependencies specified by `BuildRequires`, which need to be
+ determined manually.
+ ** Run time dependencies will be detected automatically. If it fails,
+ you have to specify them with `Requires`.
+ ** More information on this topic can be found in
+ <<dependency_handling,Dependency handling>> section.
+
+
+Description::
+ * Few sentences about the project and its uses. It will be displayed
+ by package management software.
+
+Prep section::
+ * Unpacks the sources using `setup -q` or manually if needed
+ * If a source file doesn't need to be extracted, it can be copied
+ to build directory by `cp -p $SOURCE0 .`
+ * Apply patches with `%patchX`, where X is the number of patch you
+ want to apply. (You usually need the patch index, so it would be:
+ `%patch0 -p1`)
+
+Build section::
+ * Contains project compilation instructions. Usually consists of
+ calling the projects build system such as Ant, Maven or Make.
+
+Optional `%check` section::
+ * Runs projects integration tests. Unit test are usually run in
+ `%build` section, so if there are no integration tests available,
+ this section is omitted
+
+Install section::
+ * Copies built files that are supposed to be installed into
+ `%{buildroot}` directory, which represents target filesystem's root
+
+Files section::
+ * Lists all files, that should be installed from `%{buildroot}` to
+ target system.
+ * Documentation files are prefixed by `%doc` and are
+ taken from build directory instead of buildroot
+ * Directories that this package should own are prefixed with `%dir`
+
+Changelog::
+ * Contains changes to this spec file (not upstream)
+ * Has prescribed format. To prevent mistakes in format, it is
+ advised to use tool such as `rpmdev-bumpspec` from package rpmdevtools to
+ append new changelog entries instead of editing it by hand
+
To build RPM from link:rpm_project/helloworld.spec[this `spec` file] save it in
your current directory and run `rpmbuild`:
@@ -71,9 +119,9 @@ If everything worked OK, this should produce RPM file
`~/rpmbuild/RPMS/x86_64/helloworld-1.0-1.fc18.x86_64.rpm`. You can use
`rpm -i` or `yum localinstall` commands to install this package and it
will add `/usr/share/java/helloworld.jar` and `/usr/bin/helloworld`
-wrapper script to your system. Above `spec` file doesn't specify any
-build or runtime dependencies and lacks several other common parts for
-simplification.
+wrapper script to your system. Please note that this specfile is
+simplified and lacks some additional parts, such as license
+installation.
[NOTE]
======
@@ -84,15 +132,6 @@ and distribution. Output of the commands will tell you exact paths
As you can see to build RPM files you can use `rpmbuild` command. It has several
other options, which we will cover later on.
-One of the most important RPM features is already mentioned handling of
-dependencies. There are two types of dependencies in RPM:
-
- - build time dependencies (BuildRequires tag in `spec` file)
- - runtime dependencies (Requires tag in `spec` file)
-
-More information on this topic can be found in
-<<dependency_handling ,Handling dependencies>> section.
-
Except building binary RPMs (`-bb`), `rpmbuild` can also be told to:
- build only source RPMs (SRPMs), the packages containing source files
10 years, 5 months
[javapackages] [doc] use Java example for minimal spec
by Michael Šimáček
commit dddaa6f031f85313a4b5057d58396d36c35f9b61
Author: Michael Simacek <msimacek(a)redhat.com>
Date: Mon Nov 25 12:51:09 2013 +0100
[doc] use Java example for minimal spec
Use example HelloWorld project from Introduction for packagers as the
project being packaged in example spec file in order to have something
more realistic with actual sources and build.
doc/introduction_for_developers.txt | 41 ++++++++++++++++++++------
doc/rpm_project/helloworld.spec | 54 +++++++++++++++++++++++++++++++++++
doc/rpm_project/minimal.spec | 44 ----------------------------
3 files changed, 86 insertions(+), 53 deletions(-)
---
diff --git a/doc/introduction_for_developers.txt b/doc/introduction_for_developers.txt
index c5b1f47..bed38f3 100644
--- a/doc/introduction_for_developers.txt
+++ b/doc/introduction_for_developers.txt
@@ -20,12 +20,32 @@ several reasons for it, among others:
that users or administrators can find useful
==== Example RPM Project
-RPM uses `spec` files as recipes for building software packages. A simple
-example of such spec file is below.
+RPM uses `spec` files as recipes for building software packages. We
+will use it to package example project created in previous section. If
+you didn't read it you don't need to; the file listing is available here
+and the rest is not necessary for this section.
+.Directory listing
+[source,shell]
+------
+Makefile
+src
+src/org
+src/org/fedoraproject
+src/org/fedoraproject/helloworld
+src/org/fedoraproject/helloworld/output
+src/org/fedoraproject/helloworld/output/Output.java
+src/org/fedoraproject/helloworld/input
+src/org/fedoraproject/helloworld/input/Input.java
+src/org/fedoraproject/helloworld/HelloWorld.java
+------
+
+We packed the project directory into file `helloworld.tar.gz`.
+
+.Example spec file
[source,spec,numbered]
------
-include::rpm_project/minimal.spec[]
+include::rpm_project/helloworld.spec[]
------
RPM `spec` files contain several basic sections:
@@ -40,18 +60,21 @@ RPM `spec` files contain several basic sections:
* %changelog containing RPM changelog with prescribed format used mostly to
document changes to spec file (not upstream)
-To build RPM from link:rpm_project/minimal.spec[this `spec` file] save it in
+To build RPM from link:rpm_project/helloworld.spec[this `spec` file] save it in
your current directory and run `rpmbuild`:
[source,shell]
------
-$ rpmbuild -bb minimal.spec
+$ rpmbuild -bb helloworld.spec
------
If everything worked OK, this should produce RPM file
-`~/rpmbuild/RPMS/x86_64/minimal-1.0-1.fc18.x86_64.rpm`. You can use `rpm` or
-`yum` commands to install this package and it will add `/bin/minimalistic` shell
-script to your system. Above `spec` file doesn't specify any build or runtime
-dependencies and lacks several other common parts for simplification.
+`~/rpmbuild/RPMS/x86_64/helloworld-1.0-1.fc18.x86_64.rpm`. You can use
+`rpm -i` or `yum localinstall` commands to install this package and it
+will add `/usr/share/java/helloworld.jar` and `/usr/bin/helloworld`
+wrapper script to your system. Above `spec` file doesn't specify any
+build or runtime dependencies and lacks several other common parts for
+simplification.
+
[NOTE]
======
Paths and filenames might be slightly different depending on your architecture
diff --git a/doc/rpm_project/helloworld.spec b/doc/rpm_project/helloworld.spec
new file mode 100644
index 0000000..be5f136
--- /dev/null
+++ b/doc/rpm_project/helloworld.spec
@@ -0,0 +1,54 @@
+# Comments start with hash sign
+# First part usually consists of metadata such as package name, version, and
+# much more
+Name: helloworld
+Version: 1.0
+Release: 1%{?dist}
+Summary: This is a minimal spec file example
+
+License: GPLv2+
+# Homepage URL of the project
+URL: http://www.fedoraproject.org
+
+# Our source archive. %{name} expands to 'helloworld' so the resulting
+# tarball name would be 'helloworld.tar.gz'.
+Source0: %{name}.tar.gz
+
+# Packages that contain only architecture independent files, such as shell
+# scripts or regular Java programs (not JNI libraries), should be marked as 'noarch'
+BuildArch: noarch
+
+# Project's build time dependency. We don't really need JUnit, it just
+# serves as and example
+BuildRequires: junit
+
+%description
+Very short description since we have nothing to say.
+
+%prep
+# section for preparation of sources, applying patches
+# or other things which can be done before running the build
+# The macro setup is used to unpack sources
+%setup -q
+
+%build
+# Section for compiling and generally assembling the final pieces.
+# Our Makefile builds the project JAR file
+make {?_smp_flags}
+
+%install
+# Installation into directory prepared by RPM expressed as %{buildroot}
+install -p -m 644 helloworld.jar %{buildroot}%{_javadir}/helloworld.jar
+
+# We use macro %jpackage_script to generate wrapper script for our JAR
+# Will be explained in later sections
+%jpackage_script org.fedoraproject.helloworld.HelloWorld "" "" %{name} helloworld true
+
+# List of files that this package installs on the system
+%files
+%{_javadir}/helloworld.jar
+%{_bindir}/helloworld
+
+%changelog
+* Tue Mar 19 2013 Stanislav Ochotnicky <sochotnicky(a)redhat.com> - 1.0-1
+- This is first version
10 years, 5 months