Failing deb creation for ubuntu 11.10 (ROOT 5.30.03)

I’m trying run a full deb package creation of 5.30.03 (using the tagged version from SVN). I’m currently running in Ubuntu 11.10.
ROOT version: root-5.30.03

COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/i686-linux-gnu/4.6.1/lto-wrapper
Target: i686-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.6.1-9ubuntu3' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++,go --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-plugin --enable-objc-gc --enable-targets=all --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=i686-linux-gnu
Thread model: posix
gcc version 4.6.1 (Ubuntu/Linaro 4.6.1-9ubuntu3)

First, I downloaded the code,

I run, the following:

It fails (I have to replace #!/bin/sh -> #!/bin/bash). After changing this, I attempt a build using:

Fails to start build because of errors in the debian/rules file (i.e. clean: rule is failing)

	tar -xvzf math/unuran/src/unuran*
	#if change, correct unurar version
	mv unuran-1.8.0-root ./math/unuran/src/.

Change this to:

	tar -xvzf math/unuran/src/unuran*.tar.gz
	#if change, correct unurar version
	rm -rf ./math/unuran/src/unuran-1.8.0-root
	mv unuran-1.8.0-root ./math/unuran/src/.

After correcting the above, and attempting to build again; fails to build because of issue related to krb5:

....
Checking for for globusdir ... /usr
Checking for globus_gss_assist.h ... /usr/include/globus
Checking for globus_common.h ... /usr/include/globus
Checking for globus_gsi_credential.h ... /usr/include/globus
Checking for gsi version ... yes
Checking for libglobus_gss_assist ... /usr/lib
Checking for libglobus_gssapi_gsi ... /usr/lib
Checking for libglobus_gsi_credential ... /usr/lib
Checking for libglobus_common ... /usr/lib
Checking for libglobus_gsi_callback ... /usr/lib
Checking for libglobus_proxy_ssl ... /usr/lib
Checking for libglobus_gsi_sysconfig ... /usr/lib
Checking for libglobus_openssl_error ... /usr/lib
Checking for libglobus_gssapi_gsi ... /usr/lib
Checking for libglobus_gsi_callback ... /usr/lib
Checking for libglobus_oldgaa ... /usr/lib
Checking for libglobus_gsi_cert_utils ... /usr/lib
Checking for libglobus_openssl ... /usr/lib
Checking for libglobus_gsi_proxy_core ... /usr/lib
Checking for libglobus_callout ... /usr/lib
Checking for libltdl ... /usr/lib
Checking for libssl ... /usr/lib/i386-linux-gnu
Checking for libcrypto ... /usr/lib/i386-linux-gnu
Checking whether /usr/lib/globus/include should be added to header path ... yes
Checking for globus-user-env.sh ... no
Checking for grid-proxy-init ... /usr/bin
Checking for globus-gsi-credential version ... 3.5
Checking for need of globus patch ... no
Checking for libssl ... /usr/lib/i386-linux-gnu
Checking for libcrypto ... /usr/lib/i386-linux-gnu
Checking for openssl/bio.h ... /usr/include
Checking for openssl/blowfish.h ... /usr/include
Checking for openssl/err.h ... /usr/include
Checking for openssl/pem.h ... /usr/include
Checking for openssl/rand.h ... /usr/include
Checking for openssl/rsa.h ... /usr/include
Checking for krb5.h ... /usr/include
Checking for krb5.h redirect ... /usr/include/krb5/krb5.h
Checking for krb5_c_valid_cksumtype in krb5.h ... yes
[b]
Checking for valid_cksumtype in krb5.h ... no
Checking for libk5crypto ... /usr/lib/i386-linux-gnu
Checking whether we're using MIT Kerberos ... yes
Checking for krb5_c_valid_cksumtype in /usr/lib/i386-linux-gnu/libk5crypto.so ... no
Checking for valid_cksumtype in /usr/lib/i386-linux-gnu/libk5crypto.so ... no
Either 'krb5_c_valid_cksumtype' or 'valid_cksumtype' are available; disabling krb5
Explicitly required Kerberos5 dependencies not fulfilled
make: *** [config.status] Error 1
dpkg-buildpackage: error: debian/rules build gave error exit status 2
[/b]

I believe this is an incompatibility with the Kerberos being distributed by debian/ubuntu (unresolved krb5_c_valid_cksumtype and valid_cksumtype) and ROOT. I haven’t tried using the heimdal-dev (or heimdal-multidev) - I was expecting that libkrb5-dev would be enough.

To resolve this, comment out the lines related to krb5 in debian/rules:

		  --enable-krb5					\
...
		   root-plugin-net-krb5			\

Becomes:

#		  --enable-krb5					\
...
#		   root-plugin-net-krb5			\

The compile and linking of ROOT starts. However it fails due to an unresolved library error (libPyRoot.5.so); this appears to either be a naming issue, or missing a symbolic link to the libPyRoot.so which does exist).

dh_install -s							\
		--list-missing						\
		--sourcedir=debian/tmp					\
		-X/usr/include/root/config.h			\
		-X/usr/include/root/rootcint.pri			\
		-X/usr/include/root/rootcintrule.pri		\
		-X/usr/include/root/rootlibs.pri			\
		-X/usr/include/root/precompile.h			\
		-X/usr/include/root/precompile.h.gch		\
		-X/usr/include/root/TQtWidget.cw			\
		-X/usr/share/root/fonts				\
		-X/usr/share/doc/root				\
		-X/usr/share/man/man1/system.rootdaemonrc.1	\
		-X/usr/bin/thisroot.sh				\
		-X/usr/bin/thisroot.csh				\
		-X/usr/share/root/icons/				\
		-X/etc/root/rootd				\
		-X/etc/root/daemons/				\
		-X/etc/root/proof/				\
		-X/etc/root/html				\
		-X/etc/root/RadioNuclides.txt			\
		-X/etc/root/gdb-backtrace-script		\
		-X/etc/root/gdb-backtrace.sh			\
		-X/etc/root/hostcert.conf			\
		-X/etc/root/pdg_table.txt			\
		-X/etc/root/root.mimes				\
		-X/etc/root/system.rootrc			\
		-X/etc/root/system.rootauthrc			\
		-X/etc/root/system.rootdaemonrc		\
		-X/usr/lib/root/5.30/libAfterImage.a		\
		-X/usr/lib/root/5.30/PyCintex.pyc		\
		-X/usr/lib/root/5.30/PyCintex.pyo		\
		-X/usr/lib/root/5.30/ROOT.pyc			\
		-X/usr/lib/root/5.30/ROOT.pyo			\
		-X/usr/lib/root/5.30/cint7			\
		-X/usr/include/root/Minuit2
	install -d debian/libroot-bindings-python5.30///usr/lib/root/5.30
	cp -a debian/tmp//usr/lib/root/5.30/libPyROOT.rootmap debian/libroot-bindings-python5.30///usr/lib/root/5.30/
	cp -a debian/tmp//usr/lib/root/5.30/libPyROOT.so debian/libroot-bindings-python5.30///usr/lib/root/5.30/
	cp -a debian/tmp//usr/lib/root/5.30/libPyROOT.so.5 debian/libroot-bindings-python5.30///usr/lib/root/5.30/
cp: cannot stat `debian/tmp//usr/lib/root/5.30/libPyROOT.so.5': No such file or directory
dh_install: cp -a debian/tmp//usr/lib/root/5.30/libPyROOT.so.5 debian/libroot-bindings-python5.30///usr/lib/root/5.30/ returned exit code 1
make: *** [install-arch] Error 2
dpkg-buildpackage: error: debian/rules binary gave error exit status 2

I don’t want to start creating symbolic links within the deb build area.
What is the correct way to resolve this?

Hi,

can you try the same with the trunk. In principle v5-30-03 does not work with Ubuntu 11.10.

Cheers, Fons.

Trying to build a deb from the trunk.

svn co https://root.cern.ch/svn/root/trunk root-trunk
mv root-trunk/ root-system-5.31.01
cd root-system-5.31.01
./build/package/lib/makedebdir.sh

No problem with makedebdir.sh.

fakeroot dpkg-buildpackage -us -uc 

Fails a dependency check on xrootd;

Checking for xml2-config ... /usr/bin/xml2-config
Checking for libxml2 version >= 2.4.x ... ok
Checking for XrdVersion.hh ... no
Explicitly required Xrootd dependencies not fulfilled
make: *** [config.status] Error 1

So, I edit debian/rules, and explicitly change --enable-xrootd to --disable-xrootd

XRD             = --disable-xrootd

and comment out lines which include xrootd

		root-plugin-net-xrootd		\
		root-plugin-proof-xproof		\
		root-plugin-sql-odbc			\
		root-plugin-tree-treeviewer		\
		root-system-proofd			\
		root-system-doc			\
		root-system-rootd		\
		root-system-xrootd			

Which becomes:

		root-plugin-proof-xproof		\
		root-plugin-sql-odbc			\
		root-plugin-tree-treeviewer		\
		root-system-proofd			\
		root-system-doc			\
		root-system-rootd

Rebuild:

fakeroot dpkg-buildpackage -us -uc 

Problem with the first section in clean (because I’m issuing a build without the -nc switch, clean section gets called. Code that works is below:

clean:	$(TEMPLATES:%.in=%)
	tar -xvzf math/unuran/src/unuran*.tar.gz
	#if change, correct unurar version
	rm -rf ./math/unuran/src/unuran-1.8.0-root
	mv unuran-1.8.0-root ./math/unuran/src/.

Again,

fakeroot dpkg-buildpackage -us -uc 

Now, build gets to checking for krb5

Checking for ldap.h ... /usr/include
Checking for libldap ... /usr/lib/i386-linux-gnu
Checking for liblber ... /usr/lib/i386-linux-gnu
Checking for Python.h ... /usr/include/python2.7
Checking for python2.7, libpython2.7, libpython, python, or Python ... /usr/lib
Checking for ruby.h ... /usr/lib/ruby/1.8/i686-linux
Checking for libruby, libruby1.8, libruby18, libruby1.9, or libruby19 ... /usr/lib
Checking for xml2-config ... /usr/bin/xml2-config
Checking for libxml2 version >= 2.4.x ... ok
Checking for for globusdir ... /usr
Checking for globus_gss_assist.h ... /usr/include/globus
Checking for globus_common.h ... /usr/include/globus
Checking for globus_gsi_credential.h ... /usr/include/globus
Checking for gsi version ... yes
Checking for libglobus_gss_assist ... /usr/lib
Checking for libglobus_gssapi_gsi ... /usr/lib
Checking for libglobus_gsi_credential ... /usr/lib
Checking for libglobus_common ... /usr/lib
Checking for libglobus_gsi_callback ... /usr/lib
Checking for libglobus_proxy_ssl ... /usr/lib
Checking for libglobus_gsi_sysconfig ... /usr/lib
Checking for libglobus_openssl_error ... /usr/lib
Checking for libglobus_gssapi_gsi ... /usr/lib
Checking for libglobus_gsi_callback ... /usr/lib
Checking for libglobus_oldgaa ... /usr/lib
Checking for libglobus_gsi_cert_utils ... /usr/lib
Checking for libglobus_openssl ... /usr/lib
Checking for libglobus_gsi_proxy_core ... /usr/lib
Checking for libglobus_callout ... /usr/lib
Checking for libltdl ... /usr/lib
Checking for libssl ... /usr/lib/i386-linux-gnu
Checking for libcrypto ... /usr/lib/i386-linux-gnu
Checking whether /usr/lib/globus/include should be added to header path ... yes
Checking for globus-user-env.sh ... no
Checking for grid-proxy-init ... /usr/bin
Checking for globus-gsi-credential version ... 3.5
Checking for need of globus patch ... no
Checking for libssl ... /usr/lib/i386-linux-gnu
Checking for libcrypto ... /usr/lib/i386-linux-gnu
Checking for openssl/bio.h ... /usr/include
Checking for openssl/blowfish.h ... /usr/include
Checking for openssl/err.h ... /usr/include
Checking for openssl/pem.h ... /usr/include
Checking for openssl/rand.h ... /usr/include
Checking for openssl/rsa.h ... /usr/include
Checking for krb5.h ... /usr/include
Checking for krb5.h redirect ... /usr/include/krb5/krb5.h
Checking for krb5_c_valid_cksumtype in krb5.h ... yes
Checking for valid_cksumtype in krb5.h ... no
Checking for libk5crypto ... /usr/lib/i386-linux-gnu
Checking whether we're using MIT Kerberos ... yes
Checking for krb5_c_valid_cksumtype in /usr/lib/i386-linux-gnu/libk5crypto.so ... no
Checking for valid_cksumtype in /usr/lib/i386-linux-gnu/libk5crypto.so ... no
Either 'krb5_c_valid_cksumtype' or 'valid_cksumtype' are available; disabling krb5
Explicitly required Kerberos5 dependencies not fulfilled

So I remove anything that references krb5 (in debian/rules).

        --enable-krb5               \
...
         root-plugin-net-krb5         \

are removed from the debian/rules file;

Attempt to build it again:

fakeroot dpkg-buildpackage -us -uc

Code starts compiling, will update with results of build (and any other issues);

I get the following linking failure:

g++ -shared -Wl,-soname,libGlobusAuth.so.5.31 -m32 -O2 -Wl,--no-undefined -o lib/libGlobusAuth.so.5.31 net/globusauth/src/GlobusAuth.o -Llib -lRootAuth -lglobus_gss_assist -lglobus_gssapi_gsi -lglobus_gsi_credential -lglobus_common -lglobus_gsi_callback -lglobus_proxy_ssl -lglobus_gsi_sysconfig -lglobus_openssl_error -lglobus_gssapi_gsi -lglobus_gsi_callback -lglobus_oldgaa -lglobus_gsi_cert_utils -lglobus_openssl -lglobus_gsi_proxy_core -lglobus_callout -lltdl -lssl -lcrypto -Llib -lCore -lCint -ldl
net/globusauth/src/GlobusAuth.o: In function `GlobusCheckSecCtx(char const*, TRootSecContext*)':
GlobusAuth.cxx:(.text+0xe5e): undefined reference to `TSecContext::IsActive() const'
collect2: ld returned 1 exit status
make[1]: *** [lib/libGlobusAuth.so] Error 1
make[1]: Leaving directory `/home/gking/Programming/ROOT/root-system-5.31.01'
make: *** [build-arch-stamp] Error 2
dpkg-buildpackage: error: debian/rules build gave error exit status 2

It appears that various libraries not able to built either due to dependency issues or linking the incorrect library - I would need to use:

as an LDFLAGS for compiling (without the --no-undefined). Certain libraries appear to have problems with the following flag,

-Wl,--no-undefined

This is unfortunate because the above flag guarantees that all symbols exist in the library.

TClSession.cxx fails to link with the default LDFLAGS,

g++ -shared -Wl,-soname,libClarens.so.5.31 -m32 -O2 -Wl,--no-undefined -o lib/libClarens.so.5.31 proof/clarens/src/TClarens.o proof/clarens/src/TClProxy.o proof/clarens/src/TClSession.o proof/clarens/src/TEcho.o proof/clarens/src/TGM.o proof/clarens/src/TLM.o proof/clarens/src/TSAM.o proof/clarens/src/TXmlRpc.o proof/clarens/src/G__Clarens.o -L/usr/lib -lxmlrpc_client -lxmlrpc -lxmlrpc_util -lxmlrpc_xmlparse -lxmlrpc_xmltok -L/usr/lib/i386-linux-gnu -lcurl -Wl,-Bsymbolic-functions -Llib -lMathCore -Llib -lCore -lCint -ldl
proof/clarens/src/TClSession.o: In function `TClSession::InitAuthentication()':
TClSession.cxx:(.text+0x4c9): undefined reference to `OPENSSL_add_all_algorithms_noconf'
TClSession.cxx:(.text+0x4ce): undefined reference to `OpenSSL_add_all_ciphers'
TClSession.cxx:(.text+0x4d3): undefined reference to `OpenSSL_add_all_digests'
TClSession.cxx:(.text+0x4d8): undefined reference to `ERR_load_crypto_strings'
TClSession.cxx:(.text+0x55c): undefined reference to `BIO_new_file'
TClSession.cxx:(.text+0x5c5): undefined reference to `PEM_read_bio_X509'
TClSession.cxx:(.text+0x5d9): undefined reference to `BIO_free'
TClSession.cxx:(.text+0x89c): undefined reference to `X509_get_pubkey'
TClSession.cxx:(.text+0x8b2): undefined reference to `X509_free'
TClSession.cxx:(.text+0x8ba): undefined reference to `EVP_PKEY_get1_RSA'
TClSession.cxx:(.text+0x8d2): undefined reference to `EVP_PKEY_free'
TClSession.cxx:(.text+0x94a): undefined reference to `BIO_new_file'
TClSession.cxx:(.text+0x9bd): undefined reference to `PEM_read_bio_RSAPrivateKey'
TClSession.cxx:(.text+0x9d1): undefined reference to `BIO_free'
TClSession.cxx:(.text+0xb31): undefined reference to `ERR_get_error'
TClSession.cxx:(.text+0xb38): undefined reference to `ERR_get_error'
TClSession.cxx:(.text+0xb40): undefined reference to `ERR_reason_error_string'
TClSession.cxx:(.text+0xb68): undefined reference to `BIO_free'
TClSession.cxx:(.text+0xc9e): undefined reference to `BIO_new_file'
TClSession.cxx:(.text+0xd1a): undefined reference to `ERR_get_error'
TClSession.cxx:(.text+0xd21): undefined reference to `ERR_get_error'
TClSession.cxx:(.text+0xd29): undefined reference to `ERR_reason_error_string'
TClSession.cxx:(.text+0xd55): undefined reference to `X509_free'
TClSession.cxx:(.text+0xd61): undefined reference to `ERR_get_error'
TClSession.cxx:(.text+0xd6a): undefined reference to `ERR_get_error'
TClSession.cxx:(.text+0xd72): undefined reference to `ERR_reason_error_string'
TClSession.cxx:(.text+0xd9e): undefined reference to `EVP_PKEY_free'
TClSession.cxx:(.text+0xe92): undefined reference to `RSA_free'
TClSession.cxx:(.text+0xeaa): undefined reference to `ERR_get_error'
TClSession.cxx:(.text+0xeb1): undefined reference to `ERR_get_error'
TClSession.cxx:(.text+0xeb9): undefined reference to `ERR_reason_error_string'
TClSession.cxx:(.text+0xee9): undefined reference to `RSA_free'
proof/clarens/src/TClSession.o: In function `TClSession::Create(char const*)':
TClSession.cxx:(.text+0x11c5): undefined reference to `SHA1'
TClSession.cxx:(.text+0x142c): undefined reference to `BIO_new_mem_buf'
TClSession.cxx:(.text+0x1450): undefined reference to `PEM_read_bio_X509'
TClSession.cxx:(.text+0x1460): undefined reference to `BIO_free'
TClSession.cxx:(.text+0x1478): undefined reference to `X509_get_pubkey'
TClSession.cxx:(.text+0x1488): undefined reference to `EVP_PKEY_get1_RSA'
TClSession.cxx:(.text+0x14bc): undefined reference to `RSA_size'
TClSession.cxx:(.text+0x14f4): undefined reference to `RSA_public_decrypt'
TClSession.cxx:(.text+0x1549): undefined reference to `RSA_size'
TClSession.cxx:(.text+0x1585): undefined reference to `RSA_private_decrypt'
TClSession.cxx:(.text+0x15d2): undefined reference to `SHA1'
TClSession.cxx:(.text+0x16c2): undefined reference to `ERR_get_error'
TClSession.cxx:(.text+0x16ca): undefined reference to `ERR_reason_error_string'
TClSession.cxx:(.text+0x16f0): undefined reference to `ERR_get_error'
TClSession.cxx:(.text+0x16f8): undefined reference to `ERR_reason_error_string'
TClSession.cxx:(.text+0x171e): undefined reference to `ERR_get_error'
TClSession.cxx:(.text+0x1726): undefined reference to `ERR_reason_error_string'
TClSession.cxx:(.text+0x174c): undefined reference to `ERR_get_error'
TClSession.cxx:(.text+0x1754): undefined reference to `ERR_reason_error_string'
TClSession.cxx:(.text+0x179a): undefined reference to `ERR_get_error'
TClSession.cxx:(.text+0x17a2): undefined reference to `ERR_reason_error_string'
collect2: ld returned 1 exit status
make: *** [lib/libClarens.so] Error 1

but completes successfully if I use the following after the linking step fails (obviously because I remove the -Wl,–no-undefined)

make LDFLAGS="-Wl,--no-as-needed"

NOTE: This appears to be a link error related ssl (missing libcrypto.so)
NOTE: in /usr/lib/i386-linux-gnu
libcrypto.so DEFINES

OPENSSL_add_all_algorithms_noconf
OpenSSL_add_all_ciphers
OpenSSL_add_all_digests
X509_get_pubkey
ERR_load_crypto_strings
ERR_reason_error_string
ERR_get_error
RSA_size
....

There are other issues with the debian/dpkg-buildpackage build, environment variables such as LDFLAGS and LDFLAGS_APPEND are ignored; e.g.

export LDFLAGS_APPEND="-Wl,--no-as-needed"

or

export LDFLAGS="-Wl,--no-as-needed -Wl,-Bsymbolic-function"

However the ones provided by,

dpkg-buildflags --get LDFLAGS

are used (-Wl,-Bsymbolic-functions). Trying things like evironment variables or adding DEB_LDFLAGS_APPEND="-Wl,–no-as-needed" in the debian/rules file are also ignored.

It appears to grab the default settings and the additional flag being added -Wl,–no-undefined (from config/Makefile.linux).

Aliasing make and using make debian also fails to setup the LDFLAGS variable correctly.

alias make="/usr/bin/make -e"
make debian -k [b]*[/b]

* make debian needs to be rework as a make target (since it overrides the flags chosen during ./configure, it disregards changes to debian/rules -> the script overwrites it anytime it is called, it doesn’t pass environment variables down to children process or to debian/rules or other configuration files being written, it requires the directory to be called root- rather than the <package_name>-)

The only way to solve this problem (at least from my point of view), is override the LDFLAGS set in config/Makefile.linux or to set the environment variable EXTRA_LDFLAGS to -Wl,–no-as-needed and compile the libraries that fail with overriding the LDFLAGS through make and then reissuing the dpkg-buildpackage command with -nc switch. However this is not ideal since -Wl,–no-undefined is used to guarantee that the libraries is a functional (i.e. things can be resolved when linking against user code). As well, using different LDFLAGS is a big no-no if you want to guarantee that library behaviour is package consistent.

LDFLAGS       = -m32 $(OPT) $(EXTRA_LDFLAGS) -Wl,--no-undefined

becomes:

LDFLAGS       = -m32 $(OPT) $(EXTRA_LDFLAGS) -Wl,--no-undefined -Wl,--no-as-needed

I’m proceeding to build using overriding the line in the config/Makefile.linux with just -Wl,–no-as-needed and removing the list of packages that fail to build - currently clarens (libcrypto should be added for ubuntu 11.10) and globus* (this is a ROOT library error))
(1) How will this affect root-config --ldflags?
(2) Which libraries are supposed to have undefined symbols?
(3) Is it safe to remove the undefined-symbols flag?
(4) Is this an issue with a specific system library not being found? (i.e. is this something that the configure script should have caught?)

Another one:

Making bin/roota...
g++ -m32 -O2 -Wl,--no-undefined -Wl,--no-as-needed -o bin/roota main/src/rmain.o cint/reflex/src/G__Reflex.o core/base/src/G__Base1.o core/base/src/G__Base2.o core/base/src/G__Base3.o core/clib/src/G__Clib.o core/cont/src/G__Cont.o core/meta/src/G__Meta.o core/metautils/src/G__MetaUtils.o core/rint/src/G__Rint.o core/textinput/src/G__TextInput.o core/thread/src/G__Thread.o core/unix/src/G__Unix.o core/zip/src/G__Zip.o geom/geom/src/G__Geom1.o geom/geom/src/G__Geom2.o geom/geombuilder/src/G__GeomBuilder.o geom/geompainter/src/G__GeomPainter.o graf2d/gpad/src/G__GPad.o graf2d/graf/src/G__Graf.o graf2d/postscript/src/G__PostScript.o graf2d/x11/src/G__X11.o graf2d/x11ttf/src/G__X11TTF.o graf3d/g3d/src/G__G3D.o graf3d/x3d/src/G__X3D.o gui/fitpanel/src/G__FitPanel.o gui/ged/src/G__Ged.o gui/gui/src/G__Gui1.o gui/gui/src/G__Gui2.o gui/gui/src/G__Gui3.o gui/guibuilder/src/G__GuiBld.o gui/guihtml/src/G__GuiHtml.o gui/recorder/src/G__Recorder.o gui/sessionviewer/src/G__SessionViewer.o hist/hist/src/G__Hist.o hist/histpainter/src/G__HistPainter.o hist/spectrum/src/G__Spectrum.o hist/spectrumpainter/src/G__Spectrum2Painter.o html/src/G__Html.o io/io/src/G__IO.o io/sql/src/G__SQL.o io/xml/src/G__XML.o math/foam/src/G__Foam.o math/fumili/src/G__Fumili.o math/genvector/src/G__GenVector32.o math/genvector/src/G__GenVector.o math/mathcore/src/G__MathCore.o math/mathcore/src/G__MathFit.o math/mathcore/src/G__Math.o math/matrix/src/G__Matrix.o math/minuit/src/G__Minuit.o math/mlp/src/G__MLP.o math/physics/src/G__Physics.o math/smatrix/src/G__Smatrix32.o math/smatrix/src/G__Smatrix.o math/splot/src/G__SPlot.o montecarlo/eg/src/G__EG.o montecarlo/vmc/src/G__VMC.o net/net/src/G__Net.o proof/proof/src/G__Proof.o proof/proofbench/src/G__ProofBench.o proof/proofplayer/src/G__ProofDraw.o proof/proofplayer/src/G__ProofPlayer.o tree/tree/src/G__Tree.o tree/treeplayer/src/G__TreePlayer.o tree/treeviewer/src/G__TreeViewer.o lib/libRoot.a -lXpm -lXext -lX11 -lm -ldl -pthread -rdynamic -L/usr/lib/i386-linux-gnu -lpcre -L/usr/lib/i386-linux-gnu -lfreetype -lz -lz -llzma
lib/libRoot.a(TGX11TTF.o): In function `TGX11TTF::LoadQueryFont(char const*)':
TGX11TTF.cxx:(.text+0x18a): undefined reference to `XftFontOpenXlfd'
lib/libRoot.a(TGX11TTF.o): In function `TGX11TTF::DrawString(unsigned long, unsigned long, int, int, char const*, int)':
TGX11TTF.cxx:(.text+0x7e2): undefined reference to `XftDrawCreate'
TGX11TTF.cxx:(.text+0x854): undefined reference to `XftDrawString8'
TGX11TTF.cxx:(.text+0x860): undefined reference to `XftDrawDestroy'
lib/libRoot.a(TGX11TTF.o): In function `TGX11TTF::TextWidth(unsigned long, char const*, int)':
TGX11TTF.cxx:(.text+0x93a): undefined reference to `XftTextExtents8'
lib/libRoot.a(TGX11TTF.o): In function `TXftFontData::~TXftFontData()':
TGX11TTF.cxx:(.text._ZN12TXftFontDataD2Ev[_ZN12TXftFontDataD5Ev]+0x72): undefined reference to `XftFontClose'
lib/libRoot.a(TGX11TTF.o): In function `TXftFontData::~TXftFontData()':
TGX11TTF.cxx:(.text._ZN12TXftFontDataD0Ev[non-virtual thunk to TXftFontData::~TXftFontData()]+0x82): undefined reference to `XftFontClose'
lib/libRoot.a(THTTPMessage.o): In function `THTTPMessage::Sign()':
THTTPMessage.cxx:(.text+0x760): undefined reference to `EVP_sha1'
THTTPMessage.cxx:(.text+0x798): undefined reference to `HMAC'
lib/libRoot.a(TSSLSocket.o): In function `TSSLSocket::SendRaw(void const*, int, ESendRecvOptions)':
TSSLSocket.cxx:(.text+0xd5): undefined reference to `SSL_write'
TSSLSocket.cxx:(.text+0x15e): undefined reference to `SSL_get_error'
lib/libRoot.a(TSSLSocket.o): In function `TSSLSocket::Close(char const*)':
TSSLSocket.cxx:(.text+0x238): undefined reference to `SSL_shutdown'
lib/libRoot.a(TSSLSocket.o): In function `TSSLSocket::RecvRaw(void*, int, ESendRecvOptions)':
TSSLSocket.cxx:(.text+0x2c8): undefined reference to `SSL_read'
TSSLSocket.cxx:(.text+0x351): undefined reference to `SSL_peek'
TSSLSocket.cxx:(.text+0x36d): undefined reference to `SSL_get_error'
lib/libRoot.a(TSSLSocket.o): In function `TSSLSocket::~TSSLSocket()':
TSSLSocket.cxx:(.text+0x461): undefined reference to `SSL_free'
TSSLSocket.cxx:(.text+0x473): undefined reference to `SSL_CTX_free'
lib/libRoot.a(TSSLSocket.o): In function `TSSLSocket::WrapWithSSL()':
TSSLSocket.cxx:(.text+0x755): undefined reference to `SSL_library_init'
TSSLSocket.cxx:(.text+0x75a): undefined reference to `SSLv23_method'
TSSLSocket.cxx:(.text+0x762): undefined reference to `SSL_CTX_new'
TSSLSocket.cxx:(.text+0x796): undefined reference to `SSL_CTX_load_verify_locations'
TSSLSocket.cxx:(.text+0x7f8): undefined reference to `SSL_new'
TSSLSocket.cxx:(.text+0x818): undefined reference to `SSL_set_fd'
TSSLSocket.cxx:(.text+0x858): undefined reference to `SSL_CTX_use_certificate_chain_file'
TSSLSocket.cxx:(.text+0x878): undefined reference to `SSL_CTX_use_PrivateKey_file'
TSSLSocket.cxx:(.text+0x89a): undefined reference to `SSL_connect'
collect2: ld returned 1 exit status

Makefile (probably should add these libraries to config/Makefile.linux) in base directory is missing the following libraries when compiling the binaries:

-lcrypto -lssl -lXft

Another problem, libCling.so is expected to be available (no option is set); just changed the debuild/rules to have --disable-cling (Because libclang is currently not available even if you have llvm and clang installed).

cp -a debian/tmp//usr/lib/root/5.31/libCling.so debian/libroot-core5.31///usr/lib/root/5.31/
cp: cannot stat `debian/tmp//usr/lib/root/5.31/libCling.so': No such file or directory
dh_install: cp -a debian/tmp//usr/lib/root/5.31/libCling.so debian/libroot-core5.31///usr/lib/root/5.31/ returned exit code 1
make: *** [install-arch] Error 2

Hi,

I’ve fixed the make static to include the missing libs. Please mail me any diffs to the debian files.

Cheers, Fons.

[quote=“rdm”]Hi,

I’ve fixed the make static to include the missing libs. Please mail me any diffs to the debian files.

Cheers, Fons.[/quote]

I had to remove cint/cling/Module.mk since the helper script:build/package/lib/makelists.sh uses find to grab a hold of all Modules.mk and uses these to form library dependencies necessary to install even if the package isn’t built (like libCling in this case).

I had to add -lcrypto to proof/clarens/Module.mk (to resolve symbols).

gking@gking-laptop:~/Programming/ROOT/root-system-5.31.01$ svn diff proof/clarens/Module.mk

[code]Index: proof/clarens/Module.mk

— proof/clarens/Module.mk (revision 41665)
+++ proof/clarens/Module.mk (working copy)
@@ -44,7 +44,7 @@
$(CLARENSLIB): $(CLARENSO) $(CLARENSDO) $(ORDER_) $(MAINLIBS) $(CLARENSLIBDEP)
@$(MAKELIB) $(PLATFORM) $(LD) “$(LDFLAGS)”
“$(SOFLAGS)” libClarens.$(SOEXT) $@ \

  •      "$(CLARENSO) $(CLARENSDO) $(CLARENSLIBS)" \
    
  •      "$(CLARENSO) $(CLARENSDO) $(CLARENSLIBS) -lcrypto" \
         "$(CLARENSLIBEXTRA)"
    

$(CLARENSDS): $(CLARENSH) $(CLARENSL) $(ROOTCINTTMPDEP)
[/code]

gking@gking-laptop:~/Programming/ROOT/root-system-5.31.01$ svn diff build/package/debian/rules

[code]Index: build/package/debian/rules

— build/package/debian/rules (revision 41665)
+++ build/package/debian/rules (working copy)
@@ -22,10 +22,10 @@
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
DEB_BUILD_GNU_SYSTEM ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_SYSTEM)
DEB_BUILD_ARCH ?= $(shell dpkg-architecture -qDEB_BUILD_ARCH)
-ifeq ($(DEB_HOST_ARCH_CPU),powerpc)
+ifneq ($(DEB_HOST_ARCH_CPU),powerpc)
PLATFORM = linux
else
-PLATFORM =
+PLATFORM = linuxppcgcc
endif
ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
BUILDOPT = --build=debug
@@ -37,7 +37,7 @@
#ifneq (,$(findstring alpha, $(DEB_BUILD_ARCH)))
#UNUR = --disable-unuran
#endif
-XRD = --enable-xrootd
+XRD = --disable-xrootd
#ifneq (,$(findstring sparc, $(DEB_BUILD_ARCH)))
#XRD = --disable-xrootd
#endif
@@ -54,11 +54,9 @@
–enable-editline
–enable-explicitlink
–enable-gdml \

  •     --enable-globus				\
        --enable-gsl-shared				\
        --enable-gviz					\
        --enable-fftw3				\
    
  •     --enable-krb5					\
        --enable-ldap					\
        --enable-qt					\
        --enable-qtgsi				\
    

@@ -95,9 +93,10 @@
–disable-rfio
–disable-sapdb
–fail-on-missing \

  •     --with-globus=/usr				\
    
  •     --with-globus-incdir=/usr/include/globus	\
    
  •     --with-globus-libdir=/usr/lib			\
    
  •   	--with-xft-libdir=/usr/lib/i386-linux-gnu \
    
  •   	--with-x11-libdir=/usr/lib/i386-linux-gnu \
    
  •   	--with-xpm-libdir=/usr/lib \
    
  •   	--with-xext-libdir=/usr/lib/i386-linux-gnu \
        $(UNUR)					\
        $(XRD)					\
        $(BUILDOPT)
    

@@ -179,7 +178,6 @@
root-plugin-math-fftw3
root-plugin-math-fumili
root-plugin-math-minuit2 \

  •      root-plugin-net-krb5			\
         root-plugin-net-netx			\
         root-plugin-net-xrootd		\
         root-plugin-proof-xproof		\
    

@@ -198,7 +196,6 @@
root-plugin-io-chirp
root-plugin-io-dcache
root-plugin-montecarlo-pythia8 \

  •      root-plugin-net-globus		\
         root-plugin-net-bonjour		\
         root-plugin-net-alien		\
         root-plugin-net-srp			\
    

@@ -381,8 +378,9 @@
touch build-indep-stamp

clean: $(TEMPLATES:%.in=%)

  • tar -xvzf math/unuran/src/unuran*
  • tar -xvzf math/unuran/src/unuran*.tar.gz
    #if change, correct unurar version
  • rm -rf ./math/unuran/src/unuran-1.8.0-root
    mv unuran-1.8.0-root ./math/unuran/src/.
    dh_testdir
    dh_testroot
    [/code]

All debs except one, install correctly (and root runs without the need to set ROOTSYS, LD_LIBRARY_PATH or update PATH). The doc package fails to

Error in `/usr/share/doc-base/root-system', line 19: all `Format' sections are invalid.
Note: `install-docs --verbose --check file_name' may give more details about the above error.
Registering documents with scrollkeeper...

The following happens when I run install-docs --verbose --check :

gking@gking-laptop:~/Programming/ROOT$ install-docs --verbose --check root-system-doc_5.31.01-1_all.deb 
Error in `root-system-doc_5.31.01-1_all.deb', line 1: the first line does not contain valid `Document' field.
root-system-doc_5.31.01-1_all.deb: Fatal error found, the file won't be registered.

All but the doc changes are in r41719. Please test and let me know.

Cheers, Fons.

[quote=“rdm”]All but the doc changes are in r41719. Please test and let me know.

Cheers, Fons.[/quote]

Checked out r41719 (haven’t had a chance to convert the build over to using pbuilder in order to guarantee building and setting up dependencies properly).

Path: . URL: https://root.cern.ch/svn/root/trunk Repository Root: https://root.cern.ch/svn/root Repository UUID: 27541ba8-7e3a-0410-8455-c3a389f83636 Revision: 41719 Node Kind: directory Schedule: normal Last Changed Author: rdm Last Changed Rev: 41719 Last Changed Date: 2011-11-02 08:00:22 -0700 (Wed, 02 Nov 2011)

(1) missing changes related to build/packages/debian/rules;
(2) Problem still in docs package:

gking@gking-laptop:~/Programming/ROOT/root-r41719$ sudo dpkg -i root-system-doc_5.31.01-1_all.deb 
Selecting previously deselected package root-system-doc.
(Reading database ... 612812 files and directories currently installed.)
Unpacking root-system-doc (from root-system-doc_5.31.01-1_all.deb) ...
Setting up root-system-doc (5.31.01-1) ...
Processing triggers for doc-base ...
Processing 1 added doc-base file...
Error in `/usr/share/doc-base/root-system', line 19: all `Format' sections are invalid.
Note: `install-docs --verbose --check file_name' may give more details about the above error.
Registering documents with scrollkeeper...
gking@gking-laptop:~/Programming/ROOT/root-r41719/root-system-r41719$ install-docs --verbose --check /usr/share/doc-base/root-system
Warning in `/usr/share/doc-base/root-system', line 19: file `/usr/share/doc/root/html/index.html' does not exist.
Error in `/usr/share/doc-base/root-system', line 19: all `Format' sections are invalid.
/usr/share/doc-base/root-system: Fatal error found, the file won't be registered.
gking@gking-laptop:~/Programming/ROOT/root-r41719/root-system-r41719$ install-docs --verbose --status /usr/share/doc-base/root-system
Document `/usr/share/doc-base/root-system' is not registered.

Checking the package document location,

ls debian/tmp/usr/share/doc/root/
BUILDSYSTEM     README        README.GLOBUS    README.SELECTOR
ChangeLog-2-24  README.ALIEN  README.MONALISA  test
CREDITS         README.AUTH   README.PROOF     tutorials

There is no index.html. This appears to be at least part of the bug.

File: /usr/share/doc-base/root-system

Document: root-system
Title: ROOT Reference Manual
Author: ROOT Team <rootdev@root.cern.ch>
Abstract: Reference manual of all ROOT classes.
 The ROOT system provides a set of OO frameworks with all the
 functionality needed to handle and analyse large amounts of data in a
 very efficient way. Having the data defined as a set of objects,
 specialised storage methods are used to get direct access to the
 separate attributes of the selected objects, without having to touch
 the bulk of the data. Included are histograming methods in 1, 2 and 3
 dimensions, curve fitting, function evaluation, minimisation,
 graphics and visualisation classes to allow the easy setup of an
 analysis system that can query and process the data interactively or
 in batch mode.
Section: Science/Physics

Format: HTML
Index: /usr/share/doc/root/html/index.html
Files: /usr/share/doc/root/html/*.html

In file:
debian/root-system-doc.overrides

root-system-doc: wrong-name-for-upstream-changelog usr/share/doc/root-system-doc/ChangeLog-2-24.gz

debian/root-system-doc.debhelper.log

dh_installdirs
dh_install
dh_installchangelogs
dh_installdocs
dh_installexamples
dh_installmenu
dh_installdebconf
dh_installmime
dh_installinit
dh_installman
dh_link
dh_strip
dh_compress
dh_fixperms
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb

debian/root-system-doc.docs

README/BUILDSYSTEM
README/CREDITS
README/README
README/README.ALIEN
README/README.AUTH
README/README.GLOBUS
README/README.PROOF
README/README.SELECTOR

debian/root-system-doc.substvars

misc:Depends=

Note (Asterisk marks links - they don’t work)
$ROOTSYS/doc/index.html

These pages contain the documentation for all ROOT classes, and the conceptual structure of the ROOT classes, its modules. The documentation can be accessed by browsing the modules below, by accessing a certain class directly using the Class Index*, or by simply searching the reference guide (see search field above). The ROOT Tutorials* show how to use many of ROOT's classes.

and

doc/v532/index.html (none of the internal links work)

 Search
ROOT » Download » Release Notes
ROOT Version 5.31/00 Release Notes

ROOT version 5.30/00 has been released on June 28, 2011. In case you are upgrading from an old version, please read the releases notes of version 5.24, 5,26 and version 5.28 in addition to these notes.

The release of version 5.32 is scheduled for November 29, 2011.

Bindings - packages related to the interplay with other programming languages (Python, Ruby)
Cint - the C++ interpreter
Core - the basic ROOT functionality
Geometry - building, representing and drawing geometrical objects
2D Graphics - ROOT's two dimensional graphics interface
3D Graphics - ROOT's three dimensional graphics interface
Graphical User Interface - from basic GUI elements to ROOT's own, complete dialogs
Histograming - counting values, spectra, and drawing them
HTML - the documentation generator
Input/Ouput - storing and reading data
Mathemathics - everything one can use to calculate: minimizers, matrixes, FFT, and much more
Miscellaneous - things that didn't make it into the other groups: table
Monte Carlo - monte carlo and physics simulation interfaces
Networking - network-related parts, e.g. protocols and authentication interfaces
PROOF - parallel ROOT facility
RooFit - a fitting library
RooStats - a collection of statistical tools
SQL - database interfaces
TMVA - multivariate analysis tools
Trees - ROOT's unique container class and related utilities
Tutorials - ROOT's Tutorials
Binaries for all supported platforms are available at:

      http://root.cern.ch/drupal/content/production-version-528 
For more information, see:

      http://root.cern.ch
The following people have contributed to this new version:
Bertrand Bellenot, CERN/SFT,
Dario Berzano, INFN and University of Torino, ALICE, Proof,
Rene Brun, CERN/SFT,
Philippe Canal, FNAL,
Olivier Couet, CERN/SFT,
Kyle Cranmer, NYU, RooStats,
Gerri Ganis, CERN/SFT,
Andrei Gheata, CERN/Alice,
Wim Lavrijsen, LBNL, PyRoot,
Sergei Linev, GSI,
Lorenzo Moneta, CERN/SFT,
Axel Naumann, CERN/SFT,
Eddy Offermann, Renaissance, 
Bartolomeu Rabacal, CERN/ADL, Math, 
Fons Rademakers, CERN/SFT,
Paul Russo, FNAL, 
Joerg Stelzer, DESY/Atlas, TMVA, 
Alja Tadel, UCSD/CMS, Eve, 
Matevz Tadel, UCSD/CMS, Eve, 
Eckhard von Toerne, University Bonn, ATLAS, TMVA, 
Wouter Verkerke, NIKHEF/Atlas, RooFit, 

Hi,

thanks for looking into this, but please mail me patches as we don’t actively support this but depend on (your) external help for these packages.

Cheers, Fons.

Question:
Which index.html file should be installed in /usr/share/doc/root/html/? (doc/index.html html/doc/v__/index.html? …). Is there a proper way to generate the documentation (besides opening up root and using THtml)? Further has anyone setup a debian/rules files for generating html-docs (are there any configure switches that need to be used?..) ?

I haven’t been able to install the documentation package without errors (the problem is in the following files):

Which is:

[code]Document: root-system
Title: ROOT Reference Manual
Author: ROOT Team rootdev@root.cern.ch
Abstract: Reference manual of all ROOT classes.
The ROOT system provides a set of OO frameworks with all the
functionality needed to handle and analyse large amounts of data in a
very efficient way. Having the data defined as a set of objects,
specialised storage methods are used to get direct access to the
separate attributes of the selected objects, without having to touch
the bulk of the data. Included are histograming methods in 1, 2 and 3
dimensions, curve fitting, function evaluation, minimisation,
graphics and visualisation classes to allow the easy setup of an
analysis system that can query and process the data interactively or
in batch mode.
Section: Science/Physics

Format: HTML
Index: /usr/share/doc/root/html/index.html
Files: /usr/share/doc/root/html/*.html
[/code]
and the file:

which is:

README/BUILDSYSTEM
README/CREDITS
README/README
README/README.ALIEN
README/README.AUTH
README/README.GLOBUS
README/README.PROOF
README/README.SELECTOR

These file gets moved to the $(ROOT_BUILD_DIR)/debian. I believe the problem is based upon the fact that the doc-base file wants html/index.html to be specified in root-system-doc.docs (as well as created). I also haven’t attempted to build the ROOT html documentation engine.

I’m currently trying to build with 5.32.00-rc2 (purging the old root install in order to guarantee that symbols found are the correct ones - note that there are some post package removal warnings that I haven’t tackled, mainly relating to dependency order and common directories like /usr/include/root, there is an error relating to the fact that rootd user is still logged in as well, which cause one package removal to fail). I don’t have a debian box to test upon (just my ubuntu i386 laptop). However, based upon my limited understanding, debian based distributions place libX11., libXft. and libXext.* into directories related to the machine architecture (i386-linux-gnu, x86_64-linux-gnu*, powerpc-linux-gnu, alpha-linux-gnu, …). The only problematic one is x64_64-linux-gnu which doesn’t match dpkg-architecture -qDEB_BUILD_ARCH - it returns amd64)

Index: build/package/debian/rules
===================================================================
--- build/package/debian/rules	(revision 42283)
+++ build/package/debian/rules	(working copy)
@@ -23,10 +23,22 @@
 DEB_BUILD_GNU_SYSTEM ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_SYSTEM)
 DEB_BUILD_ARCH	     ?= $(shell dpkg-architecture -qDEB_BUILD_ARCH)
 ifeq ($(DEB_HOST_ARCH_CPU),powerpc)
-PLATFORM	= linux
+ifeq ($(DEB_HOST_ARCH_CPU),amd64)
+PLATFORM  = linux
+XFT_LIBDIR ?= /usr/lib/$(DEB_HOST_ARCH_CPU)-$(DEB_BUILD_GNU_SYSTEM)
+X11_LIBDIR ?= $(XFT_LIBDIR)
+XEXT_LIBDIR ?= $(XFT_LIBDIR)
 else
-PLATFORM	=
+PLATFORM	= linux8664gcc
+XFT_LIBDIR ?= /usr/lib/x86_64-linux-gnu
+X11_LIBDIR ?= $(XFT_LIBDIR)
+XEXT_LIBDIR ?= $(XFT_LIBDIR)
 endif
+PLATFORM	= linuxppcgcc
+XFT_LIBDIR ?= /usr/lib/$(DEB_HOST_ARCH_CPU)-linux-gnu
+X11_LIBDIR  ?= $(XFT_LIBDIR)
+XEXT_LIBDIR ?= $(XFT_LIBDIR)
+endif
 ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
 BUILDOPT	= --build=debug
 endif
@@ -37,7 +49,7 @@
 #ifneq (,$(findstring alpha, $(DEB_BUILD_ARCH)))
 #UNUR		= --disable-unuran
 #endif
-XRD		= --enable-xrootd
+XRD		= --disable-xrootd
 #ifneq (,$(findstring sparc, $(DEB_BUILD_ARCH)))
 #XRD		= --disable-xrootd
 #endif
@@ -58,7 +70,6 @@
 		  --enable-gsl-shared				\
 		  --enable-gviz					\
 		  --enable-fftw3				\
-		  --enable-krb5					\
 		  --enable-ldap					\
 		  --enable-qt					\
 		  --enable-qtgsi				\
@@ -98,6 +109,10 @@
 		  --with-globus=/usr				\
 		  --with-globus-incdir=/usr/include/globus	\
 		  --with-globus-libdir=/usr/lib			\
+		  --with-xft-libdir=$(XFT_LIBDIR) \
+		  --with-x11-libdir=$(X11_LIBDIR) \
+		  --with-xpm-libdir=/usr/lib \
+		  --with-xext-libdir=$(XEXT_LIBDIR) \
 		  $(UNUR)					\
 		  $(XRD)					\
 		  $(BUILDOPT)
@@ -179,7 +194,6 @@
 		   root-plugin-math-fftw3		\
 		   root-plugin-math-fumili		\
 		   root-plugin-math-minuit2		\
-		   root-plugin-net-krb5			\
 		   root-plugin-net-netx			\
 		   root-plugin-net-xrootd		\
 		   root-plugin-proof-xproof		\

Also, updated (based upon using a recent gcc compiler version (4.6.1)

Index: config/Makefile.linux
===================================================================
--- config/Makefile.linux	(revision 42283)
+++ config/Makefile.linux	(working copy)
@@ -33,7 +33,7 @@
 
 # Linker:
 LD            = g++
-LDFLAGS       = -m32 $(OPT) $(EXTRA_LDFLAGS) -Wl,--no-undefined
+LDFLAGS       = -m32 $(OPT) $(EXTRA_LDFLAGS) -Wl,--no-undefined -Wl,--no-as-needed
 SOFLAGS       = -shared -Wl,-soname,
 SOEXT         = so

I will let you know how the build goes (with a later update). If successful, I’ll try and get pbuilder configured and produce a ppa of amd64 and i386 debs.

Cheers,

-Greg

I’ve successfully modified the contents of build/package/debian in order to allow for the production of debs using pbuilder (using i386 currently; I’ll test with amd64 later). svn diff of the 3 relevant files:

Index: build/package/debian/control
===================================================================
--- build/package/debian/control	(revision 42291)
+++ build/package/debian/control	(working copy)
@@ -3,7 +3,7 @@
 Priority: optional
 Maintainer: Antonio Salvucci <s4lb04@gmail.com>
 Homepage: http://root.cern.ch
-Build-Depends: debhelper (>= 5.0.37.2), po-debconf, libssl-dev, comerr-dev, libxpm-dev, x11proto-xext-dev, libxext-dev, libfreetype6-dev, libpcre3-dev, zlib1g-dev | libz-dev, python-dev (>= 2.1), graphviz, ttf-freefont, libncurses5-dev | libcurses-dev, libgraphviz-dev, libxft-dev, python-support (>= 0.3), ruby (>= 1.8), ruby1.8-dev | ruby-dev (>= 1.8), libglu1-mesa-dev | libglu1-xorg-dev | xlibmesa-glu-dev |  libglu-dev, libglew1.5-dev | libglew-dev, libftgl-dev | ftgl-dev, libxml2-dev, libgsl0-dev, libldap2-dev | libldap-dev, libavahi-compat-libdnssd-dev, libxmlrpc-c3-dev | libxmlrpc-c-dev, libcurl4-gnutls-dev | libcurl4-openssl-dev | libcurl-dev, libjpeg62-dev, libpng12-dev, libtiff4-dev, libgif-dev | libungif4-dev, libxinerama-dev, libfftw3-dev | fftw3-dev, libglobus-gss-assist-dev, libglobus-gssapi-gsi-dev, libglobus-gsi-credential-dev, libglobus-common-dev, libglobus-gsi-callback-dev, libglobus-gsi-sysconfig-dev, libglobus-gssapi-gsi-dev, libglobus-gsi-callback-dev, libglobus-gsi-cert-utils-dev, libglobus-openssl-dev, libglobus-gsi-proxy-core-dev, libglobus-callout-dev, globus-proxy-utils,krb5-user|heimdal-clients, libmysqlclient15-dev | libmysqlclient14-dev| libmysqlclient12-dev| libmysqlclient-dev, libiodbc2-dev | unixodbc-dev,  libpq-dev | postgresql-dev, gfortran|fortran-compiler, libqt4-dev (>= 4.3.0) | libqt3-mt-dev (>= 3.3.0), qt4-dev-tools (>= 4.3.0) | qt3-dev-tools (>= 3.3.0), libqt4-opengl-dev, libkrb5-dev|heimdal-dev
+Build-Depends: debhelper (>= 5.0.37.2), po-debconf, libssl-dev, comerr-dev, libxpm-dev, x11proto-xext-dev, libxext-dev, libfreetype6-dev, libpcre3-dev, zlib1g-dev | libz-dev, python-dev (>= 2.1), graphviz, ttf-freefont, libncurses5-dev | libcurses-dev, libgraphviz-dev, libxft-dev, python-support (>= 0.3), ruby (>= 1.8), ruby1.8-dev | ruby-dev (>= 1.8), libglu1-mesa-dev | libglu1-xorg-dev | xlibmesa-glu-dev |  libglu-dev, libglew1.5-dev | libglew-dev, libftgl-dev | ftgl-dev, libxml2-dev, libgsl0-dev, libldap2-dev | libldap-dev, libcfitsio3-dev, libavahi-compat-libdnssd-dev, libqtwebkit-dev, libxmlrpc-c3-dev | libxmlrpc-c-dev, libcurl4-gnutls-dev | libcurl4-openssl-dev | libcurl-dev, libjpeg62-dev, libpng12-dev, libtiff4-dev, libgif-dev | libungif4-dev, libxinerama-dev, libfftw3-dev | fftw3-dev, libglobus-gss-assist-dev, libglobus-gssapi-gsi-dev, libglobus-gsi-credential-dev, libglobus-common-dev, libglobus-gsi-callback-dev, libglobus-gsi-sysconfig-dev, libglobus-gssapi-gsi-dev, libglobus-gsi-callback-dev, libglobus-gsi-cert-utils-dev, libglobus-openssl-dev, libglobus-gsi-proxy-core-dev, libglobus-callout-dev, globus-proxy-utils,krb5-user|heimdal-clients, libmysqlclient15-dev | libmysqlclient14-dev| libmysqlclient12-dev| libmysqlclient-dev, libiodbc2-dev | unixodbc-dev,  libpq-dev | postgresql-dev, gfortran|fortran-compiler, libqt4-dev (>= 4.3.0) | libqt3-mt-dev (>= 3.3.0), qt4-dev-tools (>= 4.3.0) | qt3-dev-tools (>= 3.3.0), libqt4-opengl-dev, libkrb5-dev|heimdal-dev
 Standards-Version: 3.8.3
 
 Package: root-system
Index: build/package/debian/control.in
===================================================================
--- build/package/debian/control.in	(revision 42291)
+++ build/package/debian/control.in	(working copy)
@@ -3,7 +3,7 @@
 Priority: optional
 Maintainer: Antonio Salvucci <s4lb04@gmail.com>
 Homepage: http://root.cern.ch
-Build-Depends: debhelper (>= 5.0.37.2), po-debconf, libssl-dev, comerr-dev, libxpm-dev, x11proto-xext-dev, libxext-dev, libfreetype6-dev, libpcre3-dev, zlib1g-dev | libz-dev, python-dev (>= 2.1), graphviz, ttf-freefont, libncurses5-dev | libcurses-dev, libgraphviz-dev, libavahi-core-dev, libxft-dev@builddepends@
+Build-Depends: debhelper (>= 5.0.37.2), po-debconf, libssl-dev, comerr-dev, libxpm-dev, x11proto-xext-dev, libxext-dev, libfreetype6-dev, libpcre3-dev, zlib1g-dev | libz-dev, python-dev (>= 2.1), graphviz, ttf-freefont, libncurses5-dev | libcurses-dev, libgraphviz-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libcfitsio3-dev, libqtwebkit-dev, libxft-dev, @builddepends@
 Standards-Version: 3.8.3
 
 Package: root-system

[code]Index: build/package/debian/rules

— build/package/debian/rules (revision 42291)
+++ build/package/debian/rules (working copy)
@@ -22,11 +22,18 @@
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
DEB_BUILD_GNU_SYSTEM ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_SYSTEM)
DEB_BUILD_ARCH ?= $(shell dpkg-architecture -qDEB_BUILD_ARCH)
-ifeq ($(DEB_HOST_ARCH_CPU),powerpc)
+ifneq ($(DEB_HOST_ARCH_CPU),powerpc)
+ifneq ($(DEB_HOST_ARCH_CPU),amd64)
PLATFORM = linux
+XFT_LIBDIR ?= /usr/lib/$(DEB_HOST_ARCH_CPU)-$(DEB_BUILD_GNU_SYSTEM)
else
-PLATFORM =
+PLATFORM = linuxx8664gcc
+XFT_LIBDIR ?= /usr/lib/x86_64-linux-gnu
endif
+else
+PLATFORM = linuxppcgcc
+XFT_LIBDIR ?= /usr/lib/$(DEB_HOST_ARCH_CPU)-linux-gnu
+endif
ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
BUILDOPT = --build=debug
endif
@@ -37,11 +44,16 @@
#ifneq (,$(findstring alpha, $(DEB_BUILD_ARCH)))
#UNUR = --disable-unuran
#endif
-XRD = --enable-xrootd
+XRD = --disable-xrootd
#ifneq (,$(findstring sparc, $(DEB_BUILD_ARCH)))
#XRD = --disable-xrootd
#endif

+X11_LIBDIR ?= $(XFT_LIBDIR)
+XEXT_LIBDIR ?= $(XFT_LIBDIR)
+AVAHI_LIBDIR ?= $(XFT_LIBDIR)
+DNSSD_LIBDIR ?= $(XFT_LIBDIR)
+
DTMP = debian/tmp
PREFIX = /usr
SYSCONFDIR = /etc
@@ -54,11 +66,10 @@
–enable-editline
–enable-explicitlink
–enable-gdml \

  •     --enable-globus				\
        --enable-gsl-shared				\
        --enable-gviz					\
        --enable-fftw3				\
    
  •     --enable-krb5					\
    
  •     --disable-krb5					\
        --enable-ldap					\
        --enable-qt					\
        --enable-qtgsi				\
    

@@ -95,9 +106,13 @@
–disable-rfio
–disable-sapdb
–fail-on-missing \

  •     --with-globus=/usr				\
    
  •     --with-globus-incdir=/usr/include/globus	\
    
  •     --with-globus-libdir=/usr/lib			\
    
  •  --with-xft-libdir=$(XFT_LIBDIR) \
    
  •  --with-x11-libdir=$(X11_LIBDIR) \
    
  •  --with-xpm-libdir=/usr/lib \
    
  •  --with-xext-libdir=$(XEXT_LIBDIR) \
    
  •     --with-avahi-libdir=$(AVAHI_LIBDIR) \
    
  •     --with-dnssd-incdir=/usr/include \
    
  •   --with-dnssd-libdir=$(DNSSD_LIBDIR) \
        $(UNUR)					\
        $(XRD)					\
        $(BUILDOPT)
    

@@ -179,7 +194,6 @@
root-plugin-math-fftw3
root-plugin-math-fumili
root-plugin-math-minuit2 \

  •      root-plugin-net-krb5			\
         root-plugin-net-netx			\
         root-plugin-net-xrootd		\
         root-plugin-proof-xproof		\
    

@@ -198,7 +212,6 @@
root-plugin-io-chirp
root-plugin-io-dcache
root-plugin-montecarlo-pythia8 \

  •      root-plugin-net-globus		\
         root-plugin-net-bonjour		\
         root-plugin-net-alien		\
         root-plugin-net-srp			\
    

Index: build/package/debian/po/gl.po
[/code]

Another file that needs to be patched:

Index: config/Makefile.linux
===================================================================
--- config/Makefile.linux	(revision 42291)
+++ config/Makefile.linux	(working copy)
@@ -33,7 +33,7 @@
 
 # Linker:
 LD            = g++
-LDFLAGS       = -m32 $(OPT) $(EXTRA_LDFLAGS) -Wl,--no-undefined
+LDFLAGS       = -m32 $(OPT) $(EXTRA_LDFLAGS) -Wl,--no-undefined -Wl,--no-as-needed
 SOFLAGS       = -shared -Wl,-soname,
 SOEXT         = so
  1. I only modified the overall dependencies (so that the necessary libraries are installed). This should be changed in case one only wants to compile a library portion of root (however since the current ./configure && make build doesn’t support this - I’m not going to worry).

  2. The dependencies should be reworked incase someone wants to change what gets enabled (this is far more important, however there really isn’t a good list of which packages rely upon which library - at least that I can see).

  3. I haven’t modified the actual Maintainer field (or the copyright file).

  4. The number scheme for some of the packages has to be updated; for example, in build/packages/debian/control, the numbering should be updated from 5.24 to 5.32 (dependencies would have to be updated as well, conflicts would need to be moved to a more recent version).

Package: libroot-bindings-python5.24 Architecture: any Section: libs Depends: ${shlibs:Depends}, ${python:Depends}, ${misc:Depends} Replaces: root-plugin-python (<< 5.09.01-1) Description: Python extension for ROOT - runtime libraries The ROOT system provides a set of OO frameworks with all the functionality needed to handle and analyze large amounts of data efficiently. . This package contains the Python plug-in for ROOT. This package provide a Python interface to ROOT, and a ROOT interface to Python.

  1. Documentation package is still broken (haven’t had a chance to attempt to fix it).

BUILD INSTRUCTION
Before: get root source and put into root-system-/

  1. Install pbuilder. Default configuration should be okay (however, you can modify .pbuilderrc (see /usr/share/pbuilder/pbuilderrrc to see the defaults) to modify the build location and where the debs are going to be stored after building, use:
    BUILDPLACE=
    BUILDRESULT=
  2. Do the following:
sudo pbuilder --create

or if you already pbuilder configured

sudo pbuilder --update
  1. Patch the files.
  2. Run (from the root directory)
./build/package/lib/makedebdir.sh
  1. Build locally (it will generate the source tar.gz and dsc file above the build directory, further it will check to see if you have the relevant libraries installed on your system);
fakeroot dpkg-buildpackage -us -uc

it should respond (there is a warning: *** Warning *** Unknown package root-plugin-graf2d-fitsio - please update ./build/package/lib/makebuilddepend.sh
:

...
dpkg-source: warning: no source format specified in debian/source/format, see dpkg-source(1)
dpkg-source: info: using source format `1.0'
dpkg-source: info: building root-system in root-system_<version>-1.tar.gz
dpkg-source: info: building root-system in root-system_5.32.00-rc2-1.dsc
 debian/rules build
Making debian/libroot-bindings-python-dev.links from debian/libroot-bindings-python-dev.links.in 
Making debian/libroot-bindings-ruby-dev.links from debian/libroot-bindings-ruby-dev.links.in 
Making debian/libroot-python-dev.links from debian/libroot-python-dev.links.in 
Making debian/libroot-ruby-dev.links from debian/libroot-ruby-dev.links.in 
Making debian/root-plugin-geom-gdml.links from debian/root-plugin-geom-gdml.links.in 
Making debian/root-plugin-net-xrootd.links from debian/root-plugin-net-xrootd.links.in 
Making debian/root-system-bin.desktop from debian/root-system-bin.desktop.in 
Making debian/root-system-bin.menu from debian/root-system-bin.menu.in 
Making debian/root-system-bin.postinst from debian/root-system-bin.postinst.in 
Making debian/root-system-bin.preinst from debian/root-system-bin.preinst.in 
Making debian/root-system-bin.prerm from debian/root-system-bin.prerm.in 
Making debian/root-system-common.dirs from debian/root-system-common.dirs.in 
Making debian/root-system-common.links from debian/root-system-common.links.in 
Making debian/root-system-proofd.init from debian/root-system-proofd.init.in 
Making debian/root-system-proofd.links from debian/root-system-proofd.links.in 
Making debian/root-system-rootd.init from debian/root-system-rootd.init.in 
Making debian/root-system-xrootd.init from debian/root-system-xrootd.init.in 
Making debian/root-system-xrootd.links from debian/root-system-xrootd.links.in 
Making debian/ttf-root-installer.postinst from debian/ttf-root-installer.postinst.in 
Making debian/ttf-root-installer.prerm from debian/ttf-root-installer.prerm.in 
dh_testdir
# Add here commands to configure the package.
./configure linux						\
		    --prefix=/usr					\
		    --mandir=/usr/share/man/man1			\
		    --docdir=/usr/share/doc/root				\
		    --cintincdir=/usr/lib/root/5.32				\
		    --etcdir=/etc/root				\
		    --with-sys-iconpath=/usr/share/pixmaps		\
		    --libdir=/usr/lib/root/5.32		\
		    --enable-bonjour --enable-cintex --enable-clarens --enable-editline --enable-explicitlink --enable-gdml --enable-globus --enable-gsl-shared --enable-gviz --enable-fftw3 --disable-krb5 --enable-ldap --enable-qt --enable-qtgsi --enable-mathcore --enable-mathmore --enable-minuit2 --enable-mysql --enable-peac --enable-pgsql --enable-odbc --enable-reflex --enable-roofit --enable-ruby --enable-shadowpw --enable-shared --enable-soversion --enable-table --disable-rpath --disable-afs --disable-srp --disable-builtin-afterimage --disable-builtin-ftgl --disable-builtin-freetype --disable-builtin-glew --disable-builtin-pcre --disable-builtin-zlib --disable-alien --disable-chirp --disable-dcache --disable-gfal --disable-monalisa --disable-oracle --disable-pythia6 --disable-rfio --disable-sapdb --fail-on-missing --with-globus=/usr --with-globus-incdir=/usr/include/globus --with-globus-libdir=/usr/lib --with-xft-libdir=/usr/lib/i386-linux-gnu --with-x11-libdir=/usr/lib/i386-linux-gnu --with-xpm-libdir=/usr/lib --with-xext-libdir=/usr/lib/i386-linux-gnu --with-avahi-libdir=/usr/lib/i386-linux-gnu --with-dnssd-incdir=/usr/include --with-dnssd-libdir=/usr/lib/i386-linux-gnu --enable-unuran --disable-xrootd 
Checking for source directory ... /home/gking/Programming/ROOT/root-5.32/root-system-5.32.00-rc2
...

After compiling and linking locally; next run

sudo pbuilder --build ../root-system_5.32.00-rc2-1.dsc

Hopefully this will complete successfully for you.

Cheers,
-Greg

Tested this out with revision 42369 on 64-bit Ubuntu 11.10 (gcc 4.6.1):

frank@ubuntu:~$ uname -a Linux ubuntu 3.0.0-13-generic #22-Ubuntu SMP Wed Nov 2 13:27:26 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux ------------------------------------------------------------------------------ 11:24:37 frank@ubuntu:~$ gcc --version gcc (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1

Had to disable:

[ul][li]xrootd (configuration issues)[/li]
[li]kerberos (configuration issues)[/li]
[li]globus (linking issues)[/li][/ul]

The diff after all those changes is attached.

Now everything compiles happily, just having a problem building the debs. The error coming out of the

sudo pbuilder --build ../root-system_5.32.00-rc2-1.dsc

step is attached.
root-system.diff (15.9 KB)
pbuilder-error.txt (23.9 KB)

For a full check you would need to login into the pbuilder environment using --login switch. Then you can actually attempt to build with in the chroot jail.

Based upon the logfile I would guess that you need to have universe support (from https://wiki.ubuntu.com/PbuilderHowto#Universe_support)
If you want to rebuild a package from universe or build a new one that needs a package out of main you will need to add this to ~/.pbuilderrc:

COMPONENTS=“main restricted universe multiverse”

if [ “$DIST” == “squeeze” ]; then
echo "Using a Debian pbuilder environment because DIST is $DIST"
COMPONENTS="main contrib non-free"
fi
After adding the new sources you need to update the chroot, so that it picks up the new apt lines:

sudo pbuilder update --override-config

Cheers,

-Greg

[quote=“frank”]Tested this out with revision 42369 on 64-bit Ubuntu 11.10 (gcc 4.6.1):

frank@ubuntu:~$ uname -a Linux ubuntu 3.0.0-13-generic #22-Ubuntu SMP Wed Nov 2 13:27:26 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux ------------------------------------------------------------------------------ 11:24:37 frank@ubuntu:~$ gcc --version gcc (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1

Had to disable:

[ul][li]xrootd (configuration issues)[/li]
[li]kerberos (configuration issues)[/li]
[li]globus (linking issues)[/li][/ul]

The diff after all those changes is attached.

Now everything compiles happily, just having a problem building the debs. The error coming out of the

step is attached.[/quote]