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