From: Dmitry Eremin Date: Mon, 8 Dec 2014 15:25:45 +0000 (+0300) Subject: LU-6001 build: cleanup build scripts after reorganization X-Git-Tag: 2.7.51~57 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=f1a01a403bcb9b0c412cdfcd7b22b083c2c8507d LU-6001 build: cleanup build scripts after reorganization After passing a few configuration parameters in "--with/--without" option to rpmbuild some code become useless. Don't pass options through configure_args that can be passed through rpmbuild options. This allows to avoid unexpected behavior during the build from source rpm. Change module-dist-hook: target according coding guidelines. Remove obsolete liblustre.{a,so} from .spec file that were actually removed in commit cdfbc722f4d63d3ed3740cbb549062f712010d90. Don't add the version of kernel to .src.rpm. Signed-off-by: Dmitry Eremin Change-Id: Ib5f50d257b5d95efe9c45d1865f9dab9ccc3c19a Reviewed-on: http://review.whamcloud.com/12987 Reviewed-by: Bob Glossman Tested-by: Jenkins Tested-by: Maloo Reviewed-by: James Simmons Reviewed-by: Oleg Drokin --- diff --git a/autoMakefile.am b/autoMakefile.am index 4766f9c..1a61ae7 100644 --- a/autoMakefile.am +++ b/autoMakefile.am @@ -193,7 +193,7 @@ checkstack: { for MOD in $$(find . -name "*.ko"); do \ objdump -d $$MOD | perl contrib/scripts/checkstack.pl; \ done } | grep -v " bug " | sort -nr | uniq > ${CSTK} - [ -f ${CSTKO} ] && ! diff -u ${CSTKO} ${CSTK} || head -30 ${CSTK} + [ -f ${CSTKO} ] && ! diff -u ${CSTKO} ${CSTK} || head -n 30 ${CSTK} checkstack-update: [ -f ${CSTK} ] && mv -f ${CSTK} ${CSTKO} @@ -202,11 +202,14 @@ checkstack-clean: rm -f ${CSTK} ${CSTKO} module-dist-hook: - if [ -d .git ]; then \ - perl lustre/scripts/version_tag.pl --make_META > $(distdir)/META; \ + @if [ -d .git ]; then \ + perl lustre/scripts/version_tag.pl \ + --make_META > $(distdir)/META; \ elif [ -f META ]; then \ cp META $(distdir)/META; \ else \ - echo -e "I have no idea how to create a META file in $(distdir).\nPlease file a bug at http://bugzilla.lustre.org/"; \ + echo -e "\n" \ + "*** I have no idea how to create a META file in $(distdir).\n"\ + "*** Please file a bug at https://jira.hpdd.intel.com/\n"; \ exit 1; \ fi diff --git a/config/lustre-build.m4 b/config/lustre-build.m4 index 6f771e5..d9217bf 100644 --- a/config/lustre-build.m4 +++ b/config/lustre-build.m4 @@ -511,6 +511,9 @@ CONFIGURE_ARGS= eval set -- $ac_configure_args for arg; do case $arg in + --*dir=* ) ;; + -C | --cache-file=* ) ;; + --prefix=* | --*-prefix=* ) ;; --enable-dist ) ;; --with-release=* ) ;; --with-kmp-moddir=* ) ;; @@ -521,6 +524,7 @@ for arg; do --enable-tests | --disable-tests ) ;; --enable-utils | --disable-utils ) ;; --enable-iokit | --disable-iokit ) ;; + --enable-dlc | --disable-dlc ) ;; * ) CONFIGURE_ARGS="$CONFIGURE_ARGS '$arg'" ;; esac done @@ -577,11 +581,9 @@ if test x$enable_zfs = xyes ; then fi if test x$enable_iokit != xyes ; then RPMBINARGS="$RPMBINARGS --without lustre_iokit" - RPMSRCARGS="$RPMSRCARGS --without lustre_iokit" fi -if test x$BUILD_DLC != xyes ; then - RPMBINARGS="$RPMBINARGS --without lnet_dlc" - RPMSRCARGS="$RPMSRCARGS --without lnet_dlc" +if test x$USE_DLC = xyes ; then + RPMBINARGS="$RPMBINARGS --with lnet_dlc" fi RPMBUILD_BINARY_ARGS=$RPMBINARGS diff --git a/contrib/lbuild/lbuild b/contrib/lbuild/lbuild index f4bd2a0..0b193c2 100755 --- a/contrib/lbuild/lbuild +++ b/contrib/lbuild/lbuild @@ -952,12 +952,6 @@ build_lustre() { targets="--target $arch $targets" done - local confoptions="" - - if $PATCHLESS; then - confoptions="$confoptions --disable-server" - fi - local rpmbuildopt='-tb' if $NORPM; then rpmbuildopt='-tc' @@ -1002,7 +996,7 @@ build_lustre() { fi RPMBUILD_DEFS="$RPMBUILD_DEFS ${FIND_REQUIRES:+--define \"__find_requires $FIND_REQUIRES\"}" - RPMBUILD_DEFS="$RPMBUILD_DEFS --define \"configure_args $confoptions ${CONFIGURE_FLAGS}\"" + RPMBUILD_DEFS="$RPMBUILD_DEFS --define \"configure_args ${CONFIGURE_FLAGS}\"" RPMBUILD_DEFS="$RPMBUILD_DEFS --define \"kdir $linux\"" RPMBUILD_DEFS="$RPMBUILD_DEFS ${linuxobj:+--define \"kobjdir $linuxobj\"}" RPMBUILD_DEFS="$RPMBUILD_DEFS --define \"_tmppath $TMPDIR\"" diff --git a/lnet/utils/Makefile.am b/lnet/utils/Makefile.am index 49c248b..01c239d 100644 --- a/lnet/utils/Makefile.am +++ b/lnet/utils/Makefile.am @@ -40,9 +40,8 @@ AM_CFLAGS = $(LLCFLAGS) if BUILD_DLC SUBDIRS = lnetconfig -endif - AM_LDFLAGS := -L$(top_builddir)/lnet/utils/lnetconfig +endif LIBCFS= $(top_builddir)/libcfs/libcfs/libcfs.a LIBCFSUTIL= $(top_builddir)/libcfs/libcfs/libcfsutil.a diff --git a/lustre.spec.in b/lustre.spec.in index f58d3f9..d435639 100644 --- a/lustre.spec.in +++ b/lustre.spec.in @@ -18,19 +18,21 @@ %endif %{!?version: %global version @VERSION@} -%{!?kver: %global kver ""} -%{!?kdir: %global kdir %(dir=$(echo "%configure_args" | sed -ne 's/.*--with-linux=\\([^ ][^ ]*\\).*$/\\1/p'); if [ -n "$dir" ]; then echo "$dir"; else if [ -n "%kver" ]; then kversion="%kver"; else kversion="$(uname -r)"; fi; echo "/lib/modules/$kversion/source"; fi)} - -%{!?kobjdir: %global kobjdir %(dir=$(echo "%configure_args" | sed -ne 's/.*--with-linux-obj=\\([^ ][^ ]*\\).*$/\\1/p'); if [ -n "$dir" ]; then echo "$dir"; else if [ -n "%kver" ]; then kversion="%kver"; else kversion="$(uname -r)"; fi; if [ "%kdir" = "/lib/modules/$kversion/source" ]; then echo "/lib/modules/$kversion/build"; else echo "%kdir"; fi; fi)} +%{!?kver: %global kver %(uname -r)} +%{!?kdir: %global kdir /lib/modules/%{kver}/source} +%{!?kobjdir: %global kobjdir %(if [ "%{kdir}" = "/lib/modules/%{kver}/source" ]; then echo "/lib/modules/%{kver}/build"; else echo "%{kdir}"; fi)} # as an alternative to this implementation we could simply "make -C $kdir kernelversion" -%{!?kversion: %global kversion %(if test -s %kobjdir/include/generated/utsrelease.h ; then LINUXRELEASEHEADER=%kobjdir/include/generated/utsrelease.h ; elif test -s %kobjdir/include/linux/utsrelease.h ; then LINUXRELEASEHEADER=%kobjdir/include/linux/utsrelease.h ; else LINUXRELEASEHEADER=%kobjdir/include/linux/version.h; fi; sed -ne '/^#define UTS_RELEASE/s/.*"\\(.*\\)"$/\\1/p' $LINUXRELEASEHEADER)} - -%{!?downstream_release: %global downstream_release "@DOWNSTREAM_RELEASE@"} +%{!?kversion: %global kversion %(files="include/generated/utsrelease.h include/linux/utsrelease.h include/linux/version.h"; for f in $files; do if test -r %{kobjdir}/$f && grep UTS_RELEASE %{kobjdir}/$f >/dev/null; then sed -ne '/^#define UTS_RELEASE/s/.*"\\(.*\\)"$/\\1/p' %{kobjdir}/$f; break; fi; done)} %define buildid %(if [ -n "@BUILDID@" ]; then echo "_@BUILDID@"; fi) -%{!?myrelease: %global myrelease %(if [ -n "%downstream_release" ]; then echo -n "%{downstream_release}_"; fi; echo %kversion | tr '-' '_')} +%if 0%{?build_src_rpm} + %{!?myrelease: %global myrelease 1} +%else + %{!?downstream_release: %global downstream_release "@DOWNSTREAM_RELEASE@"} + %{!?myrelease: %global myrelease %(if [ -n "%downstream_release" ]; then echo -n "%{downstream_release}_"; fi; echo %kversion | tr '-' '_')} +%endif # always append the buildid, even when the caller defines %release %define fullrelease %{myrelease}%{buildid} @@ -57,7 +59,7 @@ # for those uses that don't want the -smp/-bigsmp (or the .arch) on the end # of %kversion -%define krequires %(bash -c "echo %{kversion} | sed -e 's/\.x86_64$//' -e 's/\.i[3456]86$//' -e 's/-smp$//' -e 's/-bigsmp$//' -e 's/-ppc64$//' -e 's/-default$//'") +%define krequires %(echo %{kversion} | sed -e 's/\.x86_64$//' -e 's/\.i[3456]86$//' -e 's/-smp$//' -e 's/-bigsmp$//' -e 's/-ppc64$//' -e 's/-default$//') # Set the package name prefix %if %{undefined lustre_name} @@ -81,7 +83,7 @@ %endif %if %{defined cross_path} && %{defined post_script} -%define rpm_post_base %(echo $(dirname %{cross_path})/%{lustre_name}) +%define rpm_post_base %(dirname %{cross_path})/%{lustre_name} %endif # SUSE don't support .debug_info section from cross compiler: @@ -309,53 +311,16 @@ cd $RPM_BUILD_DIR/lustre-%{version} # override %optflags so that the vendor's overzealous flags don't create # build failures %define optflags -g -O2 -Werror -CONFIGURE_ARGS="%{?configure_args} --with-release=%release" - -%if %{with lustre_tests} -CONFIGURE_ARGS="$CONFIGURE_ARGS --enable-tests" -%else -CONFIGURE_ARGS="$CONFIGURE_ARGS --disable-tests" -%endif - -%if %{with lustre_utils} -CONFIGURE_ARGS="$CONFIGURE_ARGS --enable-utils" -%else -CONFIGURE_ARGS="$CONFIGURE_ARGS --disable-utils" -%endif - -%if %{without lustre_iokit} -CONFIGURE_ARGS="$CONFIGURE_ARGS --disable-iokit" -%endif - -%if %{with lustre_modules} -CONFIGURE_ARGS="$CONFIGURE_ARGS --enable-modules" -%else -CONFIGURE_ARGS="$CONFIGURE_ARGS --disable-modules" -%endif -%if %{without servers} -CONFIGURE_ARGS="$CONFIGURE_ARGS --disable-server" -%endif - -%if %{without ldiskfs} -CONFIGURE_ARGS="$CONFIGURE_ARGS --disable-ldiskfs" -%endif - -%if %{without zfs} -CONFIGURE_ARGS="$CONFIGURE_ARGS --without-zfs" -%endif - -# if %%kdir was given, make sure it's not in the configure arguments -if [ -n "%kdir" ]; then +CONFIGURE_ARGS="%{?configure_args}" +if [ -n "$CONFIGURE_ARGS" ]; then + # make sure %%kdir and %%kobjdir are not in the configure arguments CONFIGURE_ARGS=$(echo $CONFIGURE_ARGS | sed -e 's/"\?--with-linux=[^ ][^ ]* \?//') -fi -# ditto for %%kobjdir -if [ -n "%kobjdir" ]; then CONFIGURE_ARGS=$(echo $CONFIGURE_ARGS | sed -e 's/"\?--with-linux-obj=[^ ][^ ]* \?//') + # remove --with-kmp-moddir from configure arguments, + # it will be set --with-kmp-moddir=%%kmoddir + CONFIGURE_ARGS=$(echo $CONFIGURE_ARGS | sed -e 's/"\?--with-kmp-moddir=[^ ][^ ]* \?//') fi -# remove --with-kmp-moddir from configure arguments, -# it will be set --with-kmp-moddir=%%kmoddir -CONFIGURE_ARGS=$(echo $CONFIGURE_ARGS | sed -e 's/"\?--with-kmp-moddir=[^ ][^ ]* \?//') # we need to eval "configure" because $CONFIGURE_ARGS could have a quoted # string in it which we don't want word splitted by the shell @@ -363,9 +328,20 @@ CONFIGURE_ARGS=$(echo $CONFIGURE_ARGS | sed -e 's/"\?--with-kmp-moddir=[^ ][^ ]* # inside $CONFIGURE_ARGS %define eval_configure %(echo '%configure' | sed -e 's#\./configure#eval ./configure#' -e 's/--\\(build\\|host\\|target\\)=[^ ][^ ]* //g') -%eval_configure \ - %{?kdir: --with-linux=%kdir} %{?kobjdir: --with-linux-obj=%kobjdir} \ - $CONFIGURE_ARGS --with-kmp-moddir=%{kmoddir} +%eval_configure $CONFIGURE_ARGS \ + %{?with_lustre_tests:--enable-tests}%{!?with_lustre_tests:--disable-tests} \ + %{?with_lustre_utils:--enable-utils}%{!?with_lustre_utils:--disable-utils} \ + %{?with_lustre_modules:--enable-modules}%{!?with_lustre_modules:--disable-modules} \ + %{!?with_lustre_iokit:--disable-iokit} \ + %{!?with_ldiskfs:--disable-ldiskfs} \ + %{!?with_servers:--disable-server} \ + %{!?with_zfs:--without-zfs} \ + %{!?with_lnet_dlc:--disable-dlc} \ + --with-release=%{release} \ + --with-linux=%{kdir} \ + --with-linux-obj=%{kobjdir} \ + --with-kmp-moddir=%{kmoddir} + make %{?_smp_mflags} -s %{?make_args} %install @@ -401,26 +377,22 @@ chmod -R go-w lustre-source/lustre-%{version} # fc18 needs 'x' permission for library files find $RPM_BUILD_ROOT -name \*.so -type f -exec chmod +x {} \; -if [ -f $RPM_BUILD_ROOT%{_libdir}/liblnetconfig.a ] ; then - echo '%attr(-, root, root) %{_libdir}/liblnetconfig.a' >>lustre.files - echo '%attr(-, root, root) %{_libdir}/liblnetconfig.so' >>lustre.files -fi - -if [ -f $RPM_BUILD_ROOT%{_libdir}/liblustre.so ] ; then - echo '%{_libdir}/liblustre.a' >>lustre.files - echo '%{_libdir}/liblustre.so' >>lustre.files -fi +%if %{with lnet_dlc} +echo '%attr(-, root, root) %{_libdir}/liblnetconfig.a' >>lustre.files +echo '%attr(-, root, root) %{_libdir}/liblnetconfig.so' >>lustre.files +%endif -if [ -f $RPM_BUILD_ROOT%{_libdir}/libiam.a ] ; then - echo '%{_libdir}/libiam.a' >>lustre.files -fi +%if %{with ldiskfs} +echo '%{_libdir}/libiam.a' >>lustre.files +%endif if [ -d $RPM_BUILD_ROOT%{_libdir}/lustre/snmp ] ; then - echo '%{_libdir}/lustre/snmp' >>lustre.files - echo '%{_datadir}/lustre/snmp/mibs' >>lustre.files + echo '%{_libdir}/lustre/snmp' >>lustre.files + echo '%{_datadir}/lustre/snmp/mibs' >>lustre.files fi -find $RPM_BUILD_ROOT%{_libdir}/@PACKAGE@/ -name \*.la -type f -delete +find $RPM_BUILD_ROOT%{_libdir}/@PACKAGE@ \ + -name \*.la -type f -exec rm -f {} \; %if %{with lustre_tests} echo '%{_libdir}/lustre/tests/*' >>lustre-tests.files