OW2 Consortium
Search OW2 Mail Archive: 

Advanced Search - Powered by Google


Mail Archive Home | think-dev List | June 2009 Index

<--  Date Index  --> <--  Thread Index  -->

[think-dev] Re: Re: Re: packaging


marc.poulhies@xxxxxxx (Marc Poulhiès) writes:

> Olivier Lobry <olivier.lobry@xxxxxxx> writes:
>
>> Le 24 juin 09 à 08:43, Marc Poulhiès a écrit :
>> NB: it may be good to also have the tar balls of the sources of the
>> depending packages. But I don't know where we should put them...
>
> I propose to add a new (*sic*) directory on the SVN repository, named
> "externals". 

Hi!

[For the very lazy reader, you can skip directly to the end of the
mail.]

It was far easier than I expected, packages are ready and available on
ubuntu's servers. I'll first describe quickly how I moved things in
nuptse, and then I'll describe quickly the packages.

I created a 'reorg' branch for nuptse reorganisation. I killed all
binary jars from the source tree, modified the build script so that
there is no hardcoded path anymore. Simply said, you have to take care
of dependencies when running the build. Some deps are provided as
sources only in the 'nuptse-externals' svn module, some are provided
only on binary, etc. I won't go into details, you can check it by
yourself. The old 'external' directory that was is 'thinkadl' is now in
'nuptse-externals/jars'. The 'added value' of this new nuptse-externals
is to remove the dependencies from the nuptse source tree and we can now
rebuild these jars.

I did not fix (and I think I won't) the examples. As files have been
moved, I guess all hardcoded paths in the build.xml, build.properies,
common.stuff, etc may be broken.

I added a tools/wrappers*/nuptse script that simply invokes the
compiler. I'm not sure, I didn't test, but it may not work. I don't know
if the -src-path arg is appended or overwritten when used more than
twice. Some src-path components are provided by the compiler (fractal-c.jar
and think.jar) and some is user defined.

Now, executing the toplevel build.xml will build thinkadl, fractal-c and
think jars.

As for the packaging, I decided not to "pollute" main source tree. So
for each module packaged, I've created a dedicated branch for debian
packaging. There are 2 sources packages: nuptse-externals and nuptse
(corresponding to the svn modules).

The nuptse-externals is used to create libfractal-api-java,
libfractal-adl-java and libfractal-deploy-java packages. These packages
"replaces" previous thinkadl/externals jars. For asm and dtdparser, you
can directly used ubuntu's packages (libdtdparser-java and
libasm2-java). For codegen, I also created a codegen-java package (this
should be renamed to libcodegen-java, that's why it's not commited yet).

Simply said, you have to install:
 - libfractal-api-java
 - libfractal-adl-java
 - libfractal-deploy-java
 - codegen-java
 - libasm2-java
 - libdtdparser-java

These are nuptse's dependencies.

From the nuptse source package, 2 packages are built:
  - libnuptse-java, which contains think-adl.jar, fractal-c.jar and
  think.jar
  - nuptse-bin, which contains the shell wrappers to invoke the
  compiler.

Instruction for installing the packages can be found here:

 https://launchpad.net/~marc-poulhies/+archive/ppa

I could go into more details, but I'm not sure it will be
useful. Basically, now the flow to build the packages (I use the
'trunk', but I should be merged with reorg first... when everything is
ready and no regression has been found):

 - <some changes are made in nuptse's source, branch trunk>
 - checkout ubuntu-packaging branch
 - merge trunk
 - update debian/changelog file (use the 'dch' script). Double check the
 version and distribution advertised in the new section.
 - commit changes to debian/changelog
 - run:
  $ git-buildpackage --git-upstream-branch=trunk 
--git-debian-branch=ubuntu-packaging 
  (here, you may have to change branches' names. git users will/should
  understand)
  If you are not using git but svn, there is an equivalent tool
  (svn-buildpackage). I guess it's working similarly...

This will build the source package AND the binary packages. If you want
only the source packages (if you are uploading the package to ubuntu for
example), add the '-S' argument on the command line.

Building packages for other branches (for dev branch for example) is as
easy as changing the --git-upstream-branch value and adding a correct
section in the changelog file.

If you screwed up in the packaging part, you basically do the same, but
only change the package version in the change log, not the upstream
version. Debian tools will take care of everything (it won't reupload
upstream source, as it didn't change, for example).

Are for the very lazy, here's the quick install guide (that was the
initial goal):

add the lines:

,----
| deb http://ppa.launchpad.net/marc-poulhies/ppa/ubuntu jaunty main 
| deb-src http://ppa.launchpad.net/marc-poulhies/ppa/ubuntu jaunty main 
`----

to your /etc/apt/sources.list file.
Update the package list, with '$ aptitude update' for example.
Then, install nuptse-bin, with '$ aptitude install nuptse-bin'.

You're good to go.

This is only working for ubuntu, because debian does not provide any
similar infrastructure. Canonical allows anyone to use their build
servers and packages servers.

Marc

PS: what is missing for making a 'real' package:
 - a man page for nuptse-bin and its nuptse command (maybe by extracting
 part of the launcher)
 - testing it, before being able to advertise it to anyone ;)


<--  Date Index  --> <--  Thread Index  -->

Reply via email to:

Powered by MHonArc.

Copyright © 2006-2007, OW2 Consortium | contact | webmaster.