[Lustre-discuss] Lustre Build - Ubuntu 14.04 LTS

Thomas Stibor t.stibor at gsi.de
Sat May 3 09:09:26 PDT 2014


Hi Steven,

the current kernel version in Ubuntu 14.04 TLS is "3.13.0-24-generic
#46-Ubuntu" and
there are still open issues for 3.12 to be solved
(https://jira.hpdd.intel.com/browse/LU-4416) before it can be merged
into the master. If you checkout from git.whamcloud.com the master and
try to compile
(./configure --disable-server --disable-client && make)  on Ubuntu 14.04
Lustre you will run into:

/home/thomas/tmp/lustre-release/libcfs/include/libcfs/linux/linux-mem.h:
In function 'set_shrinker':
/home/thomas/tmp/lustre-release/libcfs/include/libcfs/linux/linux-mem.h:140:10:
error: 'struct shrinker' has no member named 'shrink'
         s->shrink = func;
          ^
cc1: all warnings being treated as errors
make[6]: ***
[/home/thomas/tmp/lustre-release/libcfs/libcfs/linux/linux-tracefile.o]
Error 1
make[5]: *** [/home/thomas/tmp/lustre-release/libcfs/libcfs] Error 2
make[4]: *** [/home/thomas/tmp/lustre-release/libcfs] Error 2
make[3]: *** [_module_/home/thomas/tmp/lustre-release] Error 2
make[3]: Leaving directory `/usr/src/linux-headers-3.13.0-24-generic'
make[2]: *** [modules] Error 2
make[2]: Leaving directory `/home/thomas/tmp/lustre-release'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/thomas/tmp/lustre-release'
make: *** [all] Error 2

For Lustre client only you can do the following (however not for
3.13/3.12). I tested that for Debian Wheezy:

1.) Install kernel package in Debian and unpack in /usr/src

2.) Checkout Lustre and change file debian/rules for building client
only to:

./configure --disable-server --disable-ldfiskfs --with-o2ib
--enable-quota --enable-snmp --with-linux=/usr/src/linux-3.2.51

3.) Run the following script:

#!/bin/bash
unset DEBEMAIL
unset EMAIL
unset DEBFULLNAME
unset NAME

export DEBFULLNAME="Niemand Nobody"
export EMAIL="npcomplete at example.com"

# Extract lustre version, replace "_" by "." and remove leading letter "v".
LUSTRE_VERSION=$(echo `git describe` | sed -e "s/_/\./g" | cut -c2-)

# Add entry into debian/changelog such that packages have proper version
names.
dch --newversion $LUSTRE_VERSION --distribution unstable --nomultimaint
-t "Build from official master upstream."

#
sh ./autogen.sh

# Build debian packages.
dpkg-buildpackage

# Build modules.
export MODULE_LOC=${PWD}
cd /usr/src/linux
make-kpkg modules_image --append-to-version -lustre-my-build --revision
`date +"%Y%m%d"`

#################################################
The build DEBs can be e.g. found here:
http://web-docs.gsi.de/~tstibor/lustre/lustre-builds/wheezy/debian-3.2.0-4-amd64/

If you want to build Lustre with server support you have to make sure,
that you actual kernel version matches
the one listed in directory lustre/kernel_patches/series:
-rw-rw-r-- 1 thomas thomas 239 May  3 17:21 2.6-rhel6.series
-rw-rw-r-- 1 thomas thomas 163 May  3 17:21 2.6-sles11.series
-rw-rw-r-- 1 thomas thomas 175 May  3 17:21 3.0-sles11.series
-rw-rw-r-- 1 thomas thomas 178 May  3 17:21 3.0-sles11sp3.series
-rw-rw-r-- 1 thomas thomas 106 May  3 17:21 3.x-fc18.series

The full howto is e.g. here:
https://wiki.hpdd.intel.com/display/PUB/Building+Lustre+from+Source

There is currently another patch in review
(http://review.whamcloud.com/#/c/6427/).
However, it fixes the warnings: e.g.
"...
dh_installdeb: This package will soon FTBFS; time to fix it!
dh_fixperms: No compatibility level specified in debian/compat
..."

and issues on not used linked libs.

Cheers
 Thomas


On 05/02/2014 09:35 PM, Steven Lokie wrote:
> So I'm building off the 2.5 branch and when I'm trying to build out
> the debian packages I get a general failure 
>
>
> rm -f autoMakefile
> make[4]: Leaving directory
> `/home/imemadmin/Desktop/lustre-release/debian/lustre-source/usr/src/modules/lustre/ldiskfs'
> Making distclean in .
> make[4]: Entering directory
> `/home/imemadmin/Desktop/lustre-release/debian/lustre-source/usr/src/modules/lustre'
> test -z ".*.cmd .*.flags *.o *.ko *.mod.c .depend .*.1.*
> Modules.symvers Module.symvers" || rm -f .*.cmd .*.flags *.o *.ko
> *.mod.c .depend .*.1.* Modules.symvers Module.symvers
> test -z "Makefile Rules lustre.spec
> lustre/kernel_patches/targets/2.6-rhel6.target
> lustre/kernel_patches/targets/2.6-rhel5.target
> lustre/kernel_patches/targets/2.6-sles11.target
> lustre/kernel_patches/targets/3.0-sles11.target
> lustre/kernel_patches/targets/3.0-sles11sp3.target
> lustre/kernel_patches/targets/2.6-fc11.target
> lustre/kernel_patches/targets/2.6-fc12.target
> lustre/kernel_patches/targets/2.6-fc15.target
> lustre/kernel_patches/targets/3.x-fc18.target" || rm -f Makefile Rules
> lustre.spec lustre/kernel_patches/targets/2.6-rhel6.target
> lustre/kernel_patches/targets/2.6-rhel5.target
> lustre/kernel_patches/targets/2.6-sles11.target
> lustre/kernel_patches/targets/3.0-sles11.target
> lustre/kernel_patches/targets/3.0-sles11sp3.target
> lustre/kernel_patches/targets/2.6-fc11.target
> lustre/kernel_patches/targets/2.6-fc12.target
> lustre/kernel_patches/targets/2.6-fc15.target
> lustre/kernel_patches/targets/3.x-fc18.target
> rm -f config.h stamp-h1
> rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
> make[4]: Leaving directory
> `/home/imemadmin/Desktop/lustre-release/debian/lustre-source/usr/src/modules/lustre'
> rm -f config.status config.cache config.log configure.lineno
> config.status.lineno
> rm -f autoMakefile
> make[3]: Leaving directory
> `/home/imemadmin/Desktop/lustre-release/debian/lustre-source/usr/src/modules/lustre'
> rm -rf  debian/substvars debian/*.bak debian/*~ *~  *-stamp
> debian/linux-patch-lustre
> ls -d debian/lustre-client-modules-* | grep -v _KVERS_ | xargs rm -f
> || true
> # only remove this if the clean was not called from kdist_clean
> if [ "$MA_SOURCE_PKG" = "" ]; then \
> rm -rf  debian/m-a_root; \
> fi
> dh_clean
> # make sure we have at least a basic control in place (see build-stamp)
> rm -f debian/control
> cp debian/control.main debian/control
> make[2]: Leaving directory
> `/home/imemadmin/Desktop/lustre-release/debian/lustre-source/usr/src/modules/lustre'
> # Create the module-source tarball.
> cd debian/lustre-source/usr/src && tar jcf lustre.tar.bz2 modules 
> rm -rf debian/lustre-source/usr/src/modules
> dh_install -plustre-source
> dh_installchangelogs -p lustre-source lustre/ChangeLog
> dh_installdocs -p lustre-source 
> dh_link -p lustre-source /usr/share/modass/packages/default.sh
> /usr/share/modass/overrides/lustre-source
> dh_compress -p lustre-source
> dh_installdeb -p lustre-source
> dh_fixperms -p lustre-source
> dh_gencontrol -p lustre-source
> dh_md5sums -p lustre-source
> dh_builddeb -p lustre-source
> dpkg-deb: building package `lustre-source' in
> `../lustre-source_2.5.1-1_all.deb'.
> dh_testdir
> dh_testroot
> dh_installdirs -p lustre-utils
> dh_installdocs -p  lustre-utils
> dh_installman -p lustre-utils
> dh_install -p lustre-utils
> dh_makeshlibs -p lustre-utils
> dh_shlibdeps -L liblustre -l debian/liblustre/usr/lib
> dh_installexamples -p lustre-utils
> dh_installchangelogs -p lustre-utils lustre/ChangeLog
> dh_compress -p lustre-utils
> dh_strip -p lustre-utils
> dh_installdeb -p lustre-utils
> dh_fixperms -p lustre-utils
> dh_gencontrol -p lustre-utils
> dh_md5sums -p lustre-utils
> dh_builddeb -p lustre-utils
> dpkg-deb: building package `lustre-utils' in
> `../lustre-utils_2.5.1-1_amd64.deb'.
> dh_testdir
> dh_testroot
> dh_installdirs -p lustre-tests
> dh_installdocs -p  lustre-tests
> dh_installman -p lustre-tests
> dh_install -p lustre-tests
> dh_makeshlibs -p lustre-tests
> dh_shlibdeps -L liblustre -l debian/liblustre/usr/lib
> dh_installexamples -p lustre-tests
> dh_installchangelogs -p lustre-tests lustre/ChangeLog
> dh_compress -p lustre-tests
> dh_strip -p lustre-tests
> dh_installdeb -p lustre-tests
> dh_fixperms -p lustre-tests
> dh_gencontrol -p lustre-tests
> dh_md5sums -p lustre-tests
> dh_builddeb -p lustre-tests
> dpkg-deb: building package `lustre-tests' in
> `../lustre-tests_2.5.1-1_amd64.deb'.
> dh_testdir
> dh_testroot
> dh_installdirs -p lustre-dev
> dh_install -p lustre-dev
> dh_installdocs -p lustre-dev
> dh_installchangelogs -p lustre-dev lustre/ChangeLog
> dh_compress -p lustre-dev
> dh_installdeb -p lustre-dev
> dh_fixperms -p lustre-dev
> dh_gencontrol -p lustre-dev
> dh_md5sums -p lustre-dev
> dh_builddeb -p lustre-dev
> dpkg-deb: building package `lustre-dev' in
> `../lustre-dev_2.5.1-1_amd64.deb'.
> dh_testdir
> dh_testroot
> dh_installdirs -p liblustre
> dh_installdocs -p liblustre
> dh_install -p liblustre
> dh_makeshlibs -p liblustre
> dh_shlibdeps -L liblustre -l debian/liblustre/usr/lib
> dh_installchangelogs -p liblustre lustre/ChangeLog
> dh_compress -p liblustre
> dh_installdeb -p liblustre
> dh_strip -p liblustre
> dh_fixperms -p liblustre
> dh_gencontrol -p liblustre
> dh_md5sums -p liblustre
> dh_builddeb -p liblustre
> dpkg-deb: building package `liblustre' in
> `../liblustre_2.5.1-1_amd64.deb'.
> make[1]: Leaving directory `/home/imemadmin/Desktop/lustre-release'
> dpkg-buildpackage: full upload; Debian-native package (full source is
> included)
> export KPKG_DEST_DIR="$(pwd)/.." && \
> version=$(sed -ne '1s/^lustre (\(.*\)).*$/\1/p' debian/changelog) && \
> rm -rf debian/tmp/modules-deb && \
> mkdir debian/tmp/modules-deb && \
> pushd debian/tmp/modules-deb && \
> dpkg -x ../../../../lustre-source_${version}_all.deb $(pwd) && \
> mkdir usr_src/ && \
> tar -C usr_src/ -xjf usr/src/lustre.tar.bz2 && \
> chmod 755 usr_src/modules/lustre/debian/rules && \
> mkdir -p usr_share_modass && \
> ln -s /usr/share/modass/include/ usr_share_modass/ && \
> ln -s /usr/share/modass/packages/ usr_share_modass/ && \
> echo "lustre" > usr_share_modass/compliant.list && \
> export MA_DIR=$(pwd)/usr_share_modass && \
> KVERS=${KVERS:-}; \
> m-a build ${KVERS:+-l $KVERS} -i -u $(pwd) lustre && \
> popd && \
> VER=$(sed -ne '1s/^lustre (\(.*-[0-9][0-9]*\)).*$/\1/p'
> debian/changelog); \
> mkdir -p debs && \
> mv ../liblustre_${VER}_*.deb ../linux-patch-lustre_${VER}_all.deb
> ../lustre-dev_${VER}_*.deb ../lustre-source_${VER}_all.deb
> ../lustre-tests_${VER}_*.deb ../lustre-utils_${VER}_*.deb
> ../lustre_${VER}.dsc ../lustre_${VER}_*.changes
> ../lustre_${VER%-[0-9]*}.orig.tar.gz ../lustre_${VER}.diff.gz
> ../lustre-client-modules-${KVERS}_${VER}_*.deb debs/
> /home/imemadmin/Desktop/lustre-release/debian/tmp/modules-deb
> /home/imemadmin/Desktop/lustre-release
>
>
> dh_installdocs: This package will soon FTBFS; time to fix it!
> dh_installchangelogs: No compatibility level specified in debian/compat
> dh_installchangelogs: This package will soon FTBFS; time to fix it!
> dh_compress: No compatibility level specified in debian/compat
> dh_compress: This package will soon FTBFS; time to fix it!
> dh_installdeb: No compatibility level specified in debian/compat
> dh_installdeb: This package will soon FTBFS; time to fix it!
> dh_fixperms: No compatibility level specified in debian/compat
> dh_fixperms: This package will soon FTBFS; time to fix it!
> dh_gencontrol: No compatibility level specified in debian/compat
> dh_gencontrol: This package will soon FTBFS; time to fix it!
> dh_md5sums: No compatibility level specified in debian/compat
> dh_md5sums: This package will soon FTBFS; time to fix it!
> dh_builddeb: No compatibility level specified in debian/compat
> dh_builddeb: This package will soon FTBFS; time to fix it!
> dh_builddeb: No compatibility level specified in debian/compat
> dh_builddeb: This package will soon FTBFS; time to fix it!
> dh_installdirs: No compatibility level specified in debian/compat
> dh_installdirs: This package will soon FTBFS; time to fix it!
> dh_installdocs: No compatibility level specified in debian/compat
> dh_installdocs: This package will soon FTBFS; time to fix it!
> dh_install: No compatibility level specified in debian/compat
> dh_install: This package will soon FTBFS; time to fix it!
> dh_makeshlibs: No compatibility level specified in debian/compat
> dh_makeshlibs: This package will soon FTBFS; time to fix it!
> dh_shlibdeps: No compatibility level specified in debian/compat
> dh_shlibdeps: This package will soon FTBFS; time to fix it!
> dpkg-shlibdeps: warning: couldn't find library liblustreapi.so needed
> by debian/lustre-tests/usr/lib/lustre/tests/ll_dirstripe_verify (ELF
> format: 'elf64-x86-64'; RPATH: '')
> dh_installchangelogs: No compatibility level specified in debian/compat
> dh_installchangelogs: This package will soon FTBFS; time to fix it!
> dh_compress: No compatibility level specified in debian/compat
> dh_compress: This package will soon FTBFS; time to fix it!
> dh_installdeb: No compatibility level specified in debian/compat
> dh_installdeb: This package will soon FTBFS; time to fix it!
> dh_strip: No compatibility level specified in debian/compat
> dh_strip: This package will soon FTBFS; time to fix it!
> dh_fixperms: No compatibility level specified in debian/compat
> dh_fixperms: This package will soon FTBFS; time to fix it!
> dh_gencontrol: No compatibility level specified in debian/compat
> dh_gencontrol: This package will soon FTBFS; time to fix it!
> dh_md5sums: No compatibility level specified in debian/compat
> dh_md5sums: This package will soon FTBFS; time to fix it!
> dh_builddeb: No compatibility level specified in debian/compat
> dh_builddeb: This package will soon FTBFS; time to fix it!
> dh_builddeb: No compatibility level specified in debian/compat
> dh_builddeb: This package will soon FTBFS; time to fix it!
>  dpkg-genchanges  >../lustre_2.5.1-1_amd64.changes
> dpkg-genchanges: including full source code in upload
>  dpkg-source -I.git -I*.out[0-9]* -I*.swp --after-build lustre-release
> /bin/bash: line 15: m-a: command not found
> mv: cannot stat '../liblustre__*.deb': No such file or directory
> mv: cannot stat '../linux-patch-lustre__all.deb': No such file or
> directory
> mv: cannot stat '../lustre-dev__*.deb': No such file or directory
> mv: cannot stat '../lustre-source__all.deb': No such file or directory
> mv: cannot stat '../lustre-tests__*.deb': No such file or directory
> mv: cannot stat '../lustre-utils__*.deb': No such file or directory
> mv: cannot stat '../lustre_.dsc': No such file or directory
> mv: cannot stat '../lustre__*.changes': No such file or directory
> mv: cannot stat '../lustre_.orig.tar.gz': No such file or directory
> mv: cannot stat '../lustre_.diff.gz': No such file or directory
> mv: cannot stat '../lustre-client-modules-__*.deb': No such file or
> directory
> make: *** [debs] Error 1
>
>
> the FTBFS says there might be a missing undocumented dependency or a
> bad build (working on my 5th build attempt) and still unable to get it
> to build.  Any suggestions?
>
>
>
> On Thu, May 1, 2014 at 7:21 PM, Keith Mannthey
> <keith.mannthey at intel.com <mailto:keith.mannthey at intel.com>> wrote:
>
>     I recommended you use Lustre 2.5+ for modern Linux kernels.  A large
>     amount of build changes would be need to be ported to run Lustre 2.3
>     version against your kernel version.
>
>     Thanks,
>      Keith
>
>
>
>
>     On Thu, 2014-05-01 at 15:03 -0700, Steven Lokie wrote:
>     > Trying to run a specific version of lustre client for our setup at
>     > work - I am running into a weird error message on ./configure
>     >
>     >
>     > personally never seen this error before - checking for external
>     module
>     > build support... configure: error: unknown; check config.log for
>     > details
>     >
>     >
>     > GIT BUILD:
>     >
>     >
>     > git clone git://git.whamcloud.com/fs/lustre-release.git
>     <http://git.whamcloud.com/fs/lustre-release.git>
>     > cd lustre-release/
>     > git checkout --track -b b2_3 origin/b2_3
>     > sh ./autogen.sh
>     > ./configure --disable-server
>     >
>     >
>     > Log:
>     >
>     >
>     > root at linux-desktop:/home/imemadmin/lustre-release# ./configure
>     > --without-server
>     >
>     > checking build system type... x86_64-unknown-linux-gnu
>     > checking host system type... x86_64-unknown-linux-gnu
>     > checking target system type... x86_64-unknown-linux-gnu
>     > checking for a BSD-compatible install... /usr/bin/install -c
>     > checking whether build environment is sane... yes
>     > checking for gawk... no
>     > checking for mawk... mawk
>     > checking whether make sets $(MAKE)... yes
>     > checking how to create a ustar tar archive... gnutar
>     > checking for gcc... gcc
>     > checking whether the C compiler works... yes
>     > checking for C compiler default output file name... a.out
>     > checking for suffix of executables...
>     > checking whether we are cross compiling... no
>     > checking for suffix of object files... o
>     > checking whether we are using the GNU C compiler... yes
>     > checking whether gcc accepts -g... yes
>     > checking for gcc option to accept ISO C89... none needed
>     > checking for style of include used by make... GNU
>     > checking dependency style of gcc... gcc3
>     > checking how to run the C preprocessor... gcc -E
>     > checking for grep that handles long lines and -e... /bin/grep
>     > checking for egrep... /bin/grep -E
>     > checking for ANSI C header files... yes
>     > checking for sys/types.h... yes
>     > checking for sys/stat.h... yes
>     > checking for stdlib.h... yes
>     > checking for string.h... yes
>     > checking for memory.h... yes
>     > checking for strings.h... yes
>     > checking for inttypes.h... yes
>     > checking for stdint.h... yes
>     > checking for unistd.h... yes
>     > checking whether to configure just enough for make dist... no
>     > checking if this distro uses dpkg... yes
>     > checking for buildid... none... congratulations, you must be on
>     a tag
>     > checking whether to build BGL features... no
>     > checking for ranlib... ranlib
>     > checking for buggy compiler... no known problems
>     > checking size of unsigned long long... 8
>     > ---> size SIZEOF
>     > ---> size SIZEOF 8
>     > checking whether to enable uoss... no
>     > checking whether to enable posix osd... no
>     > checking whether to build docs... no
>     > checking whether to build utilities... yes
>     > checking whether to install init scripts... no
>     > checking whether to build Lustre tests... yes
>     > checking whether to build Lustre server support... yes
>     > checking whether to build Lustre client support... yes
>     > checking whether to enable split support... no
>     > checking whether to enable CDEBUG, CWARN... yes
>     > checking whether to enable ENTRY/EXIT... yes
>     > checking whether to enable LASSERT, LASSERTF... yes
>     > checking sys/quota.h usability... yes
>     > checking sys/quota.h presence... yes
>     > checking for sys/quota.h... yes
>     > checking whether to build kernel modules... yes (linux-gnu)
>     > /usr/src/linux-headers-3.13.0-24-generic
>     > /usr/src/linux-headers-3.13.0-24-generic
>     > checking for Linux sources... /lib/modules/3.13.0-24-generic/build
>     > checking for /lib/modules/3.13.0-24-generic/build... yes
>     > checking for Linux objects dir...
>     /lib/modules/3.13.0-24-generic/build
>     > checking for /boot/kernel.h... no
>     > checking for /var/adm/running-kernel.h... no
>     > checking for /lib/modules/3.13.0-24-generic/build/.config... yes
>     > checking
>     > for
>     /lib/modules/3.13.0-24-generic/build/include/generated/autoconf.h...
>     yes
>     > checking
>     > for /lib/modules/3.13.0-24-generic/build/include/linux/version.h...
>     > yes
>     > checking
>     > for /lib/modules/3.13.0-24-generic/build/include/linux/kconfig.h...
>     > yes
>     > checking if you are running user mode linux for x86_64... no (asm-um
>     > missing)
>     > checking
>     > for
>     /lib/modules/3.13.0-24-generic/build/include/linux/namei.h... yes
>     > checking if you are using Linux 2.6... yes
>     > checking for external module build support... configure: error:
>     > unknown; check config.log for details
>     > _______________________________________________
>     > Lustre-discuss mailing list
>     > Lustre-discuss at lists.lustre.org
>     <mailto:Lustre-discuss at lists.lustre.org>
>     > http://lists.lustre.org/mailman/listinfo/lustre-discuss
>
>
>
>
> _______________________________________________
> Lustre-discuss mailing list
> Lustre-discuss at lists.lustre.org
> http://lists.lustre.org/mailman/listinfo/lustre-discuss

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lustre.org/pipermail/lustre-discuss-lustre.org/attachments/20140503/ad48b1ba/attachment.htm>


More information about the lustre-discuss mailing list