TBH I'm still not against the idea of having deb/rpm for Karaf. So the
release manager would

a) run "mvn release:prepare ... "
b) scripts/rpmPackaging.sh
c) deploy the final artifact to a rpm repo? Or simply provide it for
download with the rest of the distribution in hope someone will pick
up the package and distribute it to their favorite repos?

Feel free to correct me, but it sounds reasonable to me. BUT the
decision need to be made by our release managers:

@Jamie: WDYT?

Kind regards,
Andreas

p.s.: yes, please create an issue with this script anyway. Would make
it ways easier to find later on.

On Tue, Jan 15, 2013 at 6:37 PM, aj...@virginia.edu <aj...@virginia.edu> wrote:
> That's simpler than distributing an RPM to the repos, by a long ways. With 
> that approach, all we'd need would be the spec (build) script. I append the 
> example at the end of this email. As you can see, it's not very much. I'm 
> sure it could be better written (I'm no RPM "maven" {grin}) but it's a place 
> to start. I used the Tanuki Java wrapper as part of the dependency, because 
> that software is commonly available for almost any Linux distro.  I also 
> included a separate body of source for the package (shown below as 
> "wrapper-gear") which is just the files that Karaf creates from its "wrapper: 
> " commands. These two inclusions allow the RPM to install Karaf as a Linux 
> system service using the Tanuki wrapper.
>
> Graham-- I'll send you a tarball of "wrapper-gear" off-list, just so you can 
> see what I did.
>
> It's this worthy of opening an issue?
>
> ---
> A. Soroka
> Software & Systems Engineering :: Online Library Environment
> the University of Virginia Library
>
> On Jan 15, 2013, at 12:26 PM, Graham Leggett wrote:
>
>> On 15 Jan 2013, at 7:09 PM, aj...@virginia.edu wrote:
>>
>>> I have, for local consumption. I based the build on an ActiveMQ RPM script. 
>>> It wasn't too difficult and I can send you the example, if you like.
>>
>> If you can, I would hugely appreciate it.
>>
>>> There has been discussion before on this list about maintaining a 
>>> semi-"blessed" RPM of Karaf directly from the project. I'd be happy to work 
>>> on that, if I could get guidance and help integrating it into the release 
>>> process.
>>
>> I maintain the spec file that is shipped with Apache httpd, the idea is that 
>> you can download a httpd tarball and run "rpmbuild -tb <tarball>" and it 
>> "just works". All that is required is that a file called <package>.spec 
>> exists in the root of the tarball. (It might also work if the spec file is 
>> elsewhere in the tree, but I've not tried).
>>
>> I am busy looking at the jpackage version of karaf, and it seems to have a 
>> significantly different structure to that shipped by Apache. Still need to 
>> get my head around it.
>>
>> Regards,
>> Graham
>> --
>>
>
> [ajs6f@esbdev2 SPECS]$ cat apache-karaf.spec
>
> # turn off Red Hat's jar repacking macro
> %define __jar_repack %{nil}
>
> #
> # Spec file for packaging Apach Karaf
> #
> Summary: Apache Karaf
> Name: apache-karaf
> Version: 2.2.7
> Release: 1
> License: Apache
> Group: Networking/Daemons
> Source0: 
> http://www.apache.org/dyn/closer.cgi/karaf/2.2.7/apache-karaf-2.2.7.tar.gz
> Source1: wrapper-gear
>
> URL: http://karaf.apache.org/
> Vendor: Apache Foundation
> Packager: A. Soroka <aj...@virginia.edu>
> BuildArch: noarch
> Requires: java
> Requires: tanukiwrapper
>
> %description
> Apache Karaf is a small OSGi runtime which provides a lightweight container 
> into which various components and applications can be deployed.
>
> %define karaf_home /usr/share/karaf
> %define karaf_data /var/cache/karaf
> %define karaf_config /etc/karaf
> %define karaf_deploy /var/local/karaf-deploy
> %define karaf_startuplib /usr/local/lib/karaf
> %define karaf_systemlib /usr/local/lib/karaf-system
> %define karaf_logs /var/log/karaf
>
> %prep
> %setup
>
> %build
> # No build needed for a pure-Java application like Karaf
> /bin/true
>
> %install
>
> # Add the "karaf" user and group
> # the "|| :" ("or NOP") on the end allows for the condition that this user 
> and group already exist
> /usr/sbin/groupadd --system karaf 2> /dev/null || :
> /usr/sbin/useradd --comment "Apache Karaf"  -g karaf \
>     --shell /bin/bash --system --home-dir %{karaf_home} karaf 2> /dev/null || 
> :
>
> # We put the various pieces of Karaf into FHS-appropriate places, then symln 
> them
> # together in /usr/share/karaf.
>
> # First copy all of the Karaf tree into %{karaf_home} (should be 
> /usr/share/karaf)
> mkdir -p $RPM_BUILD_ROOT%{karaf_home}
> mv --verbose * $RPM_BUILD_ROOT%{karaf_home}/
>
> # Now we make the FHS locations for Karaf stuff
> mkdir -p $RPM_BUILD_ROOT%{karaf_config} $RPM_BUILD_ROOT%{karaf_deploy} 
> $RPM_BUILD_ROOT%{karaf_deploy} \
> $RPM_BUILD_ROOT%{karaf_startuplib} $RPM_BUILD_ROOT%{karaf_systemlib} 
> $RPM_BUILD_ROOT%{karaf_data} \
> $RPM_BUILD_ROOT%{karaf_logs} $RPM_BUILD_ROOT/etc/init.d
>
> # Now we move pieces of the tree out of there into FHS-appropriate spots and 
> re-symln them
>
> pushd $RPM_BUILD_ROOT%{karaf_home}
>         mv etc/* $RPM_BUILD_ROOT%{karaf_config}
>         rmdir etc
>         ln -s %{karaf_config} etc
>         mv deploy/* $RPM_BUILD_ROOT%{karaf_deploy}
>         rmdir deploy
>         ln -s %{karaf_deploy} deploy
>         mv lib/* $RPM_BUILD_ROOT%{karaf_startuplib}
>         rmdir lib
>     ln -s %{karaf_startuplib} lib
>         mv system/* $RPM_BUILD_ROOT%{karaf_systemlib}
>         rmdir system
>     ln -s %{karaf_systemlib} system
> popd
>
> # Karaf logs show up in the data dir by default, so we make a symlink
> ln -s %{karaf_logs} $RPM_BUILD_ROOT%{karaf_data}/log
>
> # Tanuki wrapper configuration
> cp -v %{SOURCE1}/karaf-wrapper.conf 
> $RPM_BUILD_ROOT/etc/karaf/karaf-wrapper.conf
>
> # init.d script
> cp -v %{SOURCE1}/karaf $RPM_BUILD_ROOT/etc/init.d/karaf
>
> # Java to support Wrapper operation
> cp -v %{SOURCE1}/*.jar $RPM_BUILD_ROOT%{karaf_startuplib}
>
> %post
> # install Karaf service (but don't activate)
> /sbin/chkconfig --add karaf
>
> %preun
> # turn off Karaf and remove it from the init.d services before uninstalling
> if [ $1 = 0 ]; then
>     /etc/init.d/karaf stop
>     /sbin/chkconfig --del karaf
> fi
>
> %files
> %doc %{karaf_home}/karaf-manual-2.2.7.pdf
> %doc %{karaf_home}/karaf-manual-2.2.7.html
>
> # Karaf startup script (uses Tanuki wrapper)
> %attr(755, root, root) /etc/init.d/karaf
>
> # Karaf configuration
> %config(noreplace) %attr(775, root, karaf) %{karaf_config}
>
> # Karaf bundle cache, ActiveMQ data, etc. This is the real location of 
> KARAF_DATA
> %attr(775, karaf, karaf) %{karaf_data}
>
> # Karaf hot deploy directory
> %attr(775, karaf, karaf) %{karaf_deploy}
>
> # Karaf logs
> %attr(775, karaf, karaf) %{karaf_logs}
>
> # Karaf startup libraries
> %attr(755, root, root) %{karaf_startuplib}
>
> # Karaf packaged Maven repo. Most of Karaf code is here, not in the startup 
> libraries
> %attr(755, root, root) %{karaf_systemlib}
>
> # Full of symlinks to files above, plus demos, a README or two, etc.: this is 
> treated as KARAF_HOME and KARAF_BASE
> # we have to leave it writeable by the karaf group in order for user karaf to 
> create the Karaf lockfile
> # (which should eventually move to KARAF_DATA: see 
> https://issues.apache.org/jira/browse/KARAF-579)
> %attr(775, root, karaf) %{karaf_home}
>

Reply via email to