[LU-6987] python-docutils required despite --disable-manpages Created: 12/Aug/15  Updated: 27/Feb/16  Resolved: 27/Feb/16

Status: Resolved
Project: Lustre
Component/s: None
Affects Version/s: Lustre 2.8.0
Fix Version/s: None

Type: Bug Priority: Minor
Reporter: Stephen Champion Assignee: Dmitry Eremin (Inactive)
Resolution: Incomplete Votes: 0
Labels: None
Environment:

lustre-master
sles11sp3


Severity: 3
Rank (Obsolete): 9223372036854775807

 Description   
rpmbuilddir=`mktemp -t -d rpmbuild-lustre-$USER-XXXXXXXX`; \
        make  \
                rpmbuilddir="$rpmbuilddir" rpm-local || exit 1; \
        /usr/bin/rpmbuild \
                --define "_tmppath $rpmbuilddir/TMP" \
                --define "_topdir $rpmbuilddir" \
                --define "build_src_rpm 1" \
                --define "dist %{nil}" \
                -ts lustre-2.7.57.tar.gz || exit 1; \
        cp $rpmbuilddir/SRPMS/lustre-2.7.57-*.src.rpm . || exit 1; \
        rm -rf $rpmbuilddir
make[1]: Entering directory `/root/schamp/build/sles11sp3-client-build'
make[1]: Leaving directory `/root/schamp/build/sles11sp3-client-build'
error: Failed build dependencies:
        python-docutils is needed by lustre-2.7.57-1_gc45c8ad.x86_64
make: *** [srpm] Error 1

My configure line is :

./configure     --with-o2ib --disable-server --without-ldiskfs          \
                --disable-doc --disable-manpages                        \
                --enable-tests                                          \
                --enable-mpitests=yes --enable-liblustre-tests          \
                --with-linux=${BOBJ}/linux-${KVER}              \
                --with-linux-obj=${BOBJ}/linux-${KVER}-obj/x86_64/default       \
                --with-linux-config=${BOBJ}/linux-${KVER}-obj/x86_64/default/.config    || exit 1

Which makes this surprising given that lustre.spec says:

%if %\{with manpages\}
BuildRequires: python-docutils
%endif


 Comments   
Comment by Stephen Champion [ 12/Aug/15 ]

Fixing this exposes another bug:

make[1]: Entering directory `/root/schamp/build/sles11sp3-client-build'
make[1]: Leaving directory `/root/schamp/build/sles11sp3-client-build'
Wrote: /tmp/rpmbuild-lustre-schamp-T8yyLDoh/SRPMS/lustre-client-2.7.57-1_gc45c8ad.src.rpm
cp: cannot stat `/tmp/rpmbuild-lustre-schamp-T8yyLDoh/SRPMS/lustre-2.7.57-*.src.rpm': No such file or directory
make: *** [srpm] Error 1

Once configure flags are passed to the srpm build to fix the dependency problem, the srpm name is subject to be changed to lustre-client. This is also easy to fix, leading to:

diff --git a/autoMakefile.am b/autoMakefile.am
index 3bad8c2..c38774d 100644
--- a/autoMakefile.am
+++ b/autoMakefile.am
@@ -133,7 +133,9 @@ srpm: @PACKAGE_TARNAME@.spec dist Makefile
        $(RPMBUILD) \
                --define "_tmppath $$rpmbuilddir/TMP" \
                --define "_topdir $$rpmbuilddir" \
+               @RPMBUILD_BINARY_ARGS@ \
                --define "build_src_rpm 1" \
+               --define "lustre_name lustre" \
                --define "dist %{nil}" \
                -ts $(distdir).tar.gz || exit 1; \
        cp $$rpmbuilddir/SRPMS/$(distdir)-*.src.rpm $(top_srcdir) || exit 1; \

Which I stashed in a branch and would be happy to submit as a single or series of patches.

But I'm curious why there is a separate srpm build stage, and if I just nuke that instead.

Comment by Peter Jones [ 12/Aug/15 ]

Dmitry

Could you please advise?

Thanks

Peter

Comment by Dmitry Eremin (Inactive) [ 17/Aug/15 ]

Could you provide the complete commands sequence to reproduce this issue? I cannot reproduce this on my machine but this is RHEL 6.7. Probably this is an issue with RPM on SuSe. I need more details to understand.

When RPM produce .srpm package the "BuildRequires" from .spec file are not used. So, this line should not be an issue during srpm make target.

Comment by Stephen Champion [ 17/Aug/15 ]

My configure line is in the description. $BOBJ is just a directory with a copy of the directories the kernel packages install in /usr/src/. After configure is 'make', which leads to this error.

There is clearly a difference in behavior between the sles11 and rhel6 rpm commands: I made a simple spec:

Name: foo
Version: 0.1
Release: 1
License: GPLv2
Group: Development/Tools/Other
Source: http://oss.sgi.com/projects/foo/foo-0.1.tar.gz
URL: http://oss.sgi.com/projects/foo
Summary: Universal foo machine
BuildRequires: bar-devel >= 9000

%description
None of this foo ever works like it's suppose do.

%prep
%setup

%build
touch foo

%install
mkdir -p $RPM_BUILD_ROOT/usr/lib/%{NAME}-%{VERSION}
cp foo $RPM_BUILD_ROOT/usr/lib/%{NAME}-%{VERSION}/foo

%files
%defattr(-,root,root)
/usr/lib/%{NAME}-%{VERSION}

RHEL6.6:

$ rpmbuild -ts foo-0.1.tar.gz
Wrote: /home/schamp/rpmbuild/SRPMS/foo-0.1-1.src.rpm

SLES11SP3:

$ rpmbuild -ts foo-0.1.tar.gz
error: Failed build dependencies:
        bar-devel >= 9000 is needed by foo-0.1-1.x86_64

SLES11 : rpm-4.4.2.3-37.63.64.1
RHEL6 : rpm-4.8.0-47.el6.x86_64

Fedora, with rpm-4.12.0.1-12.fc22.x86_64 has the same behavior as RHEL. I don't have an OpenSuSE or SLES 12 box handy to test - but I suspect that this is a bug fixed between 4.4 and 4.8

Do we want to work around this behavior? SLES 11 will be around for another year or two, and 11SP4 still has rpm-4.4.

Comment by John Fuchs-Chesney (Inactive) [ 19/Feb/16 ]

Can I just check with Dmitry and Stephen if this ticket is still being worked on?

If not, I'd like to mark it as resolved.

Thanks,
~ jfc.

Comment by John Fuchs-Chesney (Inactive) [ 27/Feb/16 ]

Marking this as resolved incomplete.

Thanks,
~ jfc.

Generated at Sat Feb 10 02:05:01 UTC 2024 using Jira 9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c.