EMI build from source package instructions

One of the key objectives for the EMI 3 Monte Bianco release is that all software that is part of the EMI distribution builds from source packages.

This approach to the build changes the way we use ETICS. For EMI 3, ETICS will simply work as a repackage tool: it will take the source packages provided by each PT and run mock/pbuilder on them to check that they build correctly in a pristine environment.

For this to work, the build configuration for components that do not already build in this way will need to change.

Only ETICS configuration implementing the build from source packages will be accepted for the EMI 3 ETICS project configuration.

ETICS configuration changes

In the build from source package approach, ETICS builds packages from source packages instead of source code.

This means that ETICS will not fetch anymore the code out of your VCS and run the build, but will take a prebuilt source package, provided and hosted by the PTs on a public web server, and run the repackage on such source package.

Main configuration edit pane

It is no longer necessary to specify the vcsroot and tag fields in the etics configuration.

Hint: Keep the version specified in your ETICS configuration aligned with the version of the source package the configuration will build. This will simplify ETICS configuration maintenance.

VCS commands

Leave the main commands empty, just set:

checkout: true

otherwise ETICS will fail with a checkout failure error message.

Build commands

Scientific Linux

This is the section where most changes will be implemented. There are several ways to implement the build from source package behaviour, this is what I found works for VOMS :

clean:   rm -rf ${package.SRPMSLocation}
init:   wget -P ${package.SRPMSLocation} https://my-example-web-server/emi/voms/voms-${version}-${age}.src.rpm
configure:   
compile:   
doc:   
checkstyle:   
install:   
packaging:   true
test:   
prepublish:   
publish:   
postpublish:   

The build command just fetches a remote source RPM in the folder where ETICS expects to find the package in the repackage phase.

Debian

Etics expects Debian packages in the ${package.tgzLocation} directory.

clean:   rm -rf ${package.tgzLocation}
init:   wget -P ${package.tgzLocation} http://italiangrid.github.com/voms/packages/debs/${version}-${age}/voms_${version}-${age}.dsc http://italiangrid.github.com/voms/packages/debs/${version}-${age}/voms_${version}.orig.tar.gz http://italiangrid.github.com/voms/packages/debs/${version}-${age}/voms_${version}-${age}.debian.tar.gz
configure:   
compile:   
doc:   
checkstyle:   
install:   
packaging:   true
test:   
prepublish:   
publish:   
postpublish:   

ETICS components configurations Dependencies

  • External dependencies (OS & EMI third-party)
    • It is no longer necessary to explicitly external dependencies in ETICS-configurations that build from source packages. These dependencies will be installed from the OS & EMI third-party repositories
  • Internal dependencies (on other EMI components)
    • in order to ensure the correct build-order-execution during the ETICS NBs and to guarantee that your components build against the latest artifacts and that mock/pbuilder deployment test work as expected, Build and Runtime dependencies on other EMI components MUST be specified in your ETICS components configurations.

-- AndreaCeccanti - 10-Sep-2012

Edit | Attach | Watch | Print version | History: r4 < r3 < r2 < r1 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r4 - 2012-11-28 - AndreaCeccantiExCern
 
    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    EMI All webs login

This site is powered by the TWiki collaboration platform Powered by PerlCopyright & 2008-2020 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback