Tutorial on WMS build and debian package creation

This tutorial assumes that you have GIT access to WMS repository https://github.com/MarcoCecchi/org.glite.wms. It will help you to build all the component that you get when cloning the WMS GIT repository without the etics's build automation tools.

Pre-Requisites for build on SL6

  • A "virgin" SLC6 installation
  • yum-autoupdate disabled; execute as root:
chkconfig --level 0123456 yum-autoupdate off
/etc/init.d/yum-autoupdate stop
  • EMI2 repo for external dependencies installation via yum; execute:
wget http://emisoft.web.cern.ch/emisoft/dist/EMI/2/RPM-GPG-KEY-emi
rpm --import RPM-GPG-KEY-emi
yum -y install yum-priorities
wget http://emisoft.web.cern.ch/emisoft/dist/EMI/2/sl6/x86_64/base/ \
        emi-release-2.0.0-1.sl6.noarch.rpm
rpm -ivh emi-release-2.0.0-1.sl6.noarch.rpm 
  • Remove the pre-installed c-ares package (that is wrong version):
rpm -e --nodeps c-ares-1.7.0-6.el6.x86_64
  • Install all needed dependencies:
yum -y install mod_fcgid mod_ssl gridsite-apache httpd-devel zlib-devel boost-devel \
                     c-ares-devel glite-px-proxyrenewal-devel voms-devel voms-clients \
                     argus-pep-api-c-devel lcmaps-without-gsi-devel lcmaps-devel \
                     classads-devel glite-build-common-cpp gsoap-devel libtar-devel cmake \
                     globus-ftp-client globus-ftp-client-devel log4cpp-devel log4cpp \
                     glite-jobid-api-c glite-jobid-api-c-devel glite-jobid-api-cpp-devel openldap-devel \
                     glite-wms-utils-exception  glite-wms-utils-classad chrpath cppunit-devel \
                     glite-wms-utils-exception-devel glite-wms-utils-classad-devel glite-jdl-api-cpp-devel \
                     glite-lb-client-devel glite-lbjp-common-gsoap-plugin-devel

Checking out WMS from GIT repository

As normal user (having the GIT access as said above) clone the WMS repository:
cd $HOME; git clone git@github.com:MarcoCecchi/org.glite.wms.git WMS

Pre-Requisites for build on Debian and for .deb packaging

Execute (as root) the following commands:
apt-get install curl
curl http://emisoft.web.cern.ch/emisoft/dist/EMI/2/debian/dists/squeeze/main/ \
       binary-amd64/emi-release_2.0.0-1.deb6.1_all.deb \
       -o emi-release_2.0.0-1.deb6.1_all.deb

dpkg -i emi-release_2.0.0-1.deb6.1_all.deb

apt-get install build-essential autoconf automake autotools-dev dh-make debhelper \
                     devscripts fakeroot xutils lintian pbuilder cmake dpkg-dev pkg-config

Now an extra EMI software repository is needed to be able to install glite-jobid* packages; as root do the following:
curl http://eticssoft.web.cern.ch/eticssoft/pbuilder/emi-2-deb6-test-x86_64.list \
       -o /etc/apt/sources.list.d/emi-2-deb6-test-x86_64.list
apt-get update
Now you can install some dependencies needed by WMS's build (as root):
apt-get install libglite-jobid-api-c-dev libglite-jobid-api-cpp-dev libglite-jobid2 libclassad0-dev \
                     liblog4cpp5-dev libglobus-io-dev libglobus-gss-assist-dev libglobus-ftp-client-dev \
                     libglobus-common-dev libboost-regex-dev libboost-filesystem-dev \
                     libboost-date-time-dev libldap2-dev

Now, some dependencies internal and external do not provice the pkg-config .pc files (this is the case of boost, classad, etc.). As root follow these steps:
curl http://devel12.cnaf.infn.it:7444/pub/emi/packaging/deb/emi-pkgconfig-compat/deb-emi-pkgconfig-compat-head \
       -o deb-emi-pkgconfig-compat-head

chmod +x deb-emi-pkgconfig-compat-head
./deb-emi-pkgconfig-compat-head
dpkg -i BINARIES/emi-pkgconfig-compat_1.0.1-1_all.deb
At this point your debian box is ready to build WMS software, logout and login as "normal" user.

Build (on both SL6 and Debian6_2)

These are the steps to follow (at the moment only the org.glite.wms.common component is covered):
cd $HOME
mkdir WORKAREA
cd WORKAREA

git clone git@github.com:italiangrid/classad-utils.git
git clone git@github.com:italiangrid/jobman-exception.git
git clone git@github.com:MarcoCecchi/org.glite.wms.git

cd classad-utils
cmake . -DCMAKE_INSTALL_PREFIX=$HOME/WORKAREA/stage \
            -Dprefix=$HOME/WORKAREA/stage/usr -Dexec_prefix=$HOME/WORKAREA/stage/usr \
            -Dlibdir=$HOME/WORKAREA/stage/usr/lib -Dincludedir=$HOME/WORKAREA/stage/usr/include \
            -DPVER=$VERSION
make install
cd ..

cd jobman-exception
cmake . -DCMAKE_INSTALL_PREFIX=$HOME/WORKAREA/stage  \
            -Dprefix=$HOME/WORKAREA/stage/usr -Dexec_prefix=$HOME/WORKAREA/stage/usr \
            -Dlibdir=$HOME/WORKAREA/stage/usr/lib -Dincludedir=$HOME/WORKAREA/stage/usr/include \
            -DPVER=$VERSION
make install
cd ..

cd org.glite.wms/org.glite.wms.common
cmake . -DPREFIX=$HOME/WORKAREA/stage/usr -DINSTALL_BUILD_DEV= \
           $HOME/WORKAREA/debian/build_dev/org.glite.wms.common/usr \
           -DINSTALL_BUILD=$HOME/WORKAREA/debian/build_nodev/org.glite.wms.common/usr \
           -DOFFICIAL_INSTALL_PREFIX=/usr -DPVER=$VERSION
make install

In order to make sure that everything worked try to execute an executable provided by org.glite.wms.common:

export LD_LIBRARY_PATH=$HOME/WORKAREA/stage/usr/lib
$HOME/WORKAREA/stage/usr/bin/glite-wms-get-configuration 
Configuration problem: file "glite_wms.conf" not found in the path(s) /etc/glite-wms, /opt/glite/etc, /etc,
It doesn't matter the error output, this is just to verify that the exe is correctly compiled and linked. TBC

Produce the debian packages

The control and .install files needed to produce the .deb packages are already there, in the org.glite.wms.common/debian directory. To produce the debian packages it's just matter of change dir on the directories specified when cmake has been invoked (look above for the INSTALL_BUILD and INSTALL_BUILD_DEV macros) and execute the .deb build command. Then do the following:
cd $HOME/WORKAREA/org.glite.wms/org.glite.wms.common

mkdir -p $HOME/WORKAREA/debian/build_nodev/org.glite.wms.common/DEBIAN
cp debian/deb-control-file.txt $HOME/WORKAREA/debian/build_nodev/org.glite.wms.common/DEBIAN/control
cp debian/libglite-wms-common.install $HOME/WORKAREA/debian/build_nodev/org.glite.wms.common/DEBIAN/

mkdir -p $HOME/WORKAREA/debian/build_dev/org.glite.wms.common/DEBIAN
cp debian/deb-control-file-dev.txt $HOME/WORKAREA/debian/build_dev/org.glite.wms.common/DEBIAN/control
cp debian/libglite-wms-common-dev.install $HOME/WORKAREA/debian/build_dev/org.glite.wms.common/DEBIAN/

dpkg -b $HOME/WORKAREA/debian/build_nodev/org.glite.wms.common \
         $HOME/WORKAREA/debian/build_nodev/org.glite.wms.common/glite-wms-common.deb
dpkg -b $HOME/WORKAREA/debian/build_dev/org.glite.wms.common \
         $HOME/WORKAREA/debian/build_dev/org.glite.wms.common/glite-wms-common-dev.deb

-- AlviseDorigo - 2012-10-04
Edit | Attach | PDF | History: r14 < r13 < r12 < r11 < r10 | Backlinks | Raw View | More topic actions
Topic revision: r14 - 2012-10-15 - AlviseDorigo
 
This site is powered by the TWiki collaboration platformCopyright © 2008-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback