Changes between Initial Version and Version 1 of LinuxCoeExample


Ignore:
Timestamp:
Nov 19, 2007, 1:22:57 PM (11 years ago)
Author:
bruno
Comment:

Split of LinuxCOE page

Legend:

Unmodified
Added
Removed
Modified
  • LinuxCoeExample

    v1 v1  
     1= Example of use on LinuxCOE (more complex example) =
     2
     3When the project was mature enough to package correctly mondorescue and itself, I then decided it was time to try it on another unrelated project to see how difficult it could be and document that experience so that others could also begin to use pb for their own project.
     4
     5You first have to edit your .pbrc configuration file in your home directory, which will setup things globally.
     6
     7Here are my .pbrc LinuxCOE relative entries:
     8{{{
     9$ grep -E '^#|linuxcoe|default' ~/.pbrc
     10#
     11# Root of the temp file used to store info on the project
     12# Is also used to determine the root directory of the project
     13# No default option allowed here as they need to be all different
     14#
     15pbrc linuxcoe = /users/bruno/LinuxCOE/cvs/pbrc
     16}}}
     17
     18Then you have to go under the directory you planned to store the project you want to package (/users/bruno/LinuxCOE/cvs) and you have to create there a directory pbconf which will contain everything related to project-builder around your own project. The pbrc file you indicated in the configuation file will be managed automatically by pb and you don't have to care of it. Just to reference where it will be, which will in turn give to project-builder the information of the project's directory.
     19{{{
     20$ cd /users/bruno/LinuxCOE/cvs
     21$ mkdir pbconf
     22}}}
     23
     24The main configuration file under pbconf should be named with the name of the project (the one used above in the .pbrc file) with the pb extension. the one created for LinuxCOE looks like that:
     25{{{
     26$ cat linuxcoe.pb
     27#
     28# Project Builder configuration file
     29# For project LinuxCOE
     30#
     31# $Id$
     32#
     33
     34#
     35# Global version/tag for the project
     36#
     37projver linuxcoe = devel
     38projtag linuxcoe = 1
     39
     40# Adapt to your needs:
     41# Optional if you need to overwrite the global values above
     42#
     43pkgver nil
     44pkgtag nil
     45
     46
     47# Hash of default package/package directory
     48#
     49defpkgdir systemdesigner = SystemDesigner
     50
     51# Hash of additional package/package directory
     52#
     53extpkgdir systemdesigner-docs = docs
     54extpkgdir systemdesigner-fedora = SystemDesigner-Fedora
     55
     56# Hash of valid version names
     57#
     58version devel
     59version stable
     60
     61# List of additional files on which to apply filters
     62# Files are mentioned relatively to pbroot
     63#
     64filteredfiles systemdesigner =
     65filteredfiles systemdesigner-docs =
     66}}}
     67
     68I inform pb that I will produce packages with a version-tag of devel-1, that no local package should have a different version than the project version (pkgver/pkgtag), that my default package will be systemdesigner (pb will work on it by default all the time) and that additional packages it may deal with are systemdesigner-docs and systemdesigner-fedora. In addition to standard version with numbers, pb will accpet the version devel and stable. And finally, I give to the name of all files (per package) that it will have to filter to produce the packages - more on that later on.
     69
     70With that minimal configuration, you may begin to test project-builder. Try to produce a compressed tar file of your project.
     71{{{
     72$ export PBPROJ=linuxcoe
     73$ pb -r `pwd` cms2build
     74}}}
     75The export order will allow you to avoid precising all the time to pb that you work on the linuxcoe project. If you prefer, you can invoke pb as follows:
     76{{{
     77pb -p linuxcoe -r `pwd` cms2build
     78}}}
     79or make a shell alias, or whatever is convenient for you.
     80
     81The -r option is needed at start to create the pbrc file you mentioned in your .pbrc configuration file initially. After that first invocation, you will only need to call it again, if you change the version you want to generate.
     82
     83cms2build is generally the first action pb will be asked to execute as it will produce a compressed tar ball from your Confoguration Management System repository. pb is CMS agnostic, and can currently handle friendly SVN and CVS, and can be easily adapted to support others.
     84
     85As a result of your commands you should see something like that:
     86{{{
     87$ pb -r `pwd` cms2build
     88Project linuxcoe
     89Action: cms2build
     90Packages: systemdesigner
     91
     92Management of systemdesigner devel-1 (rev CVS)
     93Exporting /users/bruno/LinuxCOE/cvs/SystemDesigner from CVS... OK
     94Extracting log info from CVS... OK
     95Build files generated for
     96No Build files found for mandriva-2007.1
     97Creating systemdesigner tar files compressed... OK
     98Under /users/bruno/LinuxCOE/cvs/delivery/systemdesigner-devel.tar.gz
     99}}}
     100
     101So it creates for you the right tar file at the right place. But it warns you that no build file was found for your project. Normal we haven't created one yet ;-) It's our next step.
     102
     103You'll first need to create the infrastructure needed to host the information for building packages:
     104{{{
     105$ mkdir -p pbconf/systemdesigner/rpm
     106$ mkdir -p pbconf/systemdesigner/pbfilter
     107}}}
     108
     109then thanks to the work done by Louis Bouchard to package LinuxCOE, you can take the spec file he created and adapt it to suit pb.
     110{{{
     111$ cat pbconf/systemdesigner/rpm/systemdesigner.spec
     112}}}