Uploaded image for project: 'Lustre'
  1. Lustre
  2. LU-7841

Lutsre2.8 fails to build on SLES11 SP4 due to unavailability of rst2man/python-docutils

Details

    • Bug
    • Resolution: Fixed
    • Major
    • Lustre 2.9.0
    • Lustre 2.8.0
    • None
    • SLES 11 SP4
    • 3
    • 9223372036854775807

    Description

      I am trying to build Lustre2.8 on sles11 Sp4 but it fails with dependency issues for rst2man/python-docutils.

      I tried Suse repo but could not find any python-docutils for SLES11.

      I then tried to install python-docutils-0.9.1-6.1.noarch.rpm which is what I used to resolve same issue on RHEL. However it resulted in failure with dependency on python(abi) = 2.6 and rpmlib(FileDigests) <= 4.6.0-1. These 2 are again not found in SLES11 repro.

      I also tried -disable-doc (./configure --disable-doc --with-linux=/usr/src/linux-3.0.101-68_lustre-with-o2ib=/usr/src/compat-rdma) but still the build fails with same reason.

      I also went through Bug LU-6987, LU-6437, LU-6853.
      Anything else that you can suggest ?

      [ hdtsfna2361 20160303_0104 lustre-2.8.0]# ./configure -with-linux=/usr/src/linux-3.0.101-68_lustre-with-o2ib=/usr/src/compat-rdma
      checking build system type... x86_64-suse-linux-gnu
      checking host system type... x86_64-suse-linux-gnu
      checking target system type... x86_64-suse-linux-gnu
      checking for a BSD-compatible install... /usr/bin/install -c
      checking whether build environment is sane... yes
      checking for a thread-safe mkdir -p... /bin/mkdir -p
      checking for gawk... gawk
      checking whether make sets $(MAKE)... yes
      checking how to create a ustar tar archive... gnutar
      checking whether to enable maintainer-specific portions of Makefiles... no
      checking for gcc... gcc
      checking for C compiler default output file name... a.out
      checking whether the C compiler works... yes
      checking whether we are cross compiling... no
      checking for suffix of executables...
      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 for a sed that does not truncate output... /usr/bin/sed
      checking for grep that handles long lines and -e... /usr/bin/grep
      checking for egrep... /usr/bin/grep -E
      checking for fgrep... /usr/bin/grep -F
      checking for ld used by gcc... /usr/x86_64-suse-linux/bin/ld
      checking if the linker (/usr/x86_64-suse-linux/bin/ld) is GNU ld... yes
      checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
      checking the name lister (/usr/bin/nm -B) interface... BSD nm
      checking whether ln -s works... yes
      checking the maximum length of command line arguments... 1572864
      checking whether the shell understands some XSI constructs... yes
      checking whether the shell understands "+="... yes
      checking for /usr/x86_64-suse-linux/bin/ld option to reload object files... -r
      checking for objdump... objdump
      checking how to recognize dependent libraries... pass_all
      checking for ar... ar
      checking for strip... strip
      checking for ranlib... ranlib
      checking command to parse /usr/bin/nm -B output from gcc object... ok
      checking how to run the C preprocessor... gcc -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 for dlfcn.h... yes
      checking for objdir... .libs
      checking if gcc supports -fno-rtti -fno-exceptions... no
      checking for gcc option to produce PIC... -fPIC -DPIC
      checking if gcc PIC flag -fPIC -DPIC works... yes
      checking if gcc static flag -static works... yes
      checking if gcc supports -c -o file.o... yes
      checking if gcc supports -c -o file.o... (cached) yes
      checking whether the gcc linker (/usr/x86_64-suse-linux/bin/ld -m elf_x86_64) supports shared libraries... yes
      checking whether -lc should be explicitly linked in... no
      checking dynamic linker characteristics... GNU/Linux ld.so
      checking how to hardcode library paths into programs... immediate
      checking whether stripping libraries is possible... yes
      checking if libtool supports shared libraries... yes
      checking whether to build shared libraries... yes
      checking whether to build static libraries... yes
      checking for a thread-safe mkdir -p... /bin/mkdir -p
      checking dependency style of gcc... gcc3
      checking for rpmbuild... /usr/bin/rpmbuild
      configure: Lustre base checks
      ==============================================================================
      checking whether to configure just enough for make dist... no
      checking if this distro uses dpkg... no
      checking for buildid...
      configure: WARNING:

      FIXME: I don't know how to deal with source trees outside of git that
      don't have a META file. Not setting a buildid.

      checking for ranlib... (cached) ranlib
      checking for ld... /usr/x86_64-suse-linux/bin/ld -m elf_x86_64
      checking for objdump... (cached) objdump
      checking for strip... (cached) strip
      checking size of unsigned long long... 8
      checking whether to use OSD addon... no
      checking whether to build Lustre docs... no
      checking whether to build Lustre manpages... yes
      checking for rst2man... no
      checking for rst2man.py... no
      configure: error: rst2man is needed to build the man pages. Install python-docutils.

      [ hdtsfna2361 20160303_0121 lustre-2.8.0]# rpm -ivh /root/lustre2.8/python-docutils-0.9.1-6.1.noarch.rpm
      warning: /root/lustre2.8/python-docutils-0.9.1-6.1.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 4dc87421
      error: Failed dependencies:
      python(abi) = 2.6 is needed by python-docutils-0.9.1-6.1.noarch
      rpmlib(FileDigests) <= 4.6.0-1 is needed by python-docutils-0.9.1-6.1.noarch

      Attachments

        Activity

          [LU-7841] Lutsre2.8 fails to build on SLES11 SP4 due to unavailability of rst2man/python-docutils
          rread Robert Read added a comment -

          FWIW, this was the wrong solution for this issue, and I would have given this patch -ive review had I been given the chance. We thew out a fair amount of work contributed by the community and very useful tool.

          rread Robert Read added a comment - FWIW, this was the wrong solution for this issue, and I would have given this patch -ive review had I been given the chance. We thew out a fair amount of work contributed by the community and very useful tool.

          Patch has landed to master for 2.9.0

          jgmitter Joseph Gmitter (Inactive) added a comment - Patch has landed to master for 2.9.0

          Oleg Drokin (oleg.drokin@intel.com) merged in patch http://review.whamcloud.com/18792/
          Subject: LU-7841 doc: stop using python-docutils
          Project: fs/lustre-release
          Branch: master
          Current Patch Set:
          Commit: 4943ae1975dcd056143db2b31663414c9b1981a7

          gerrit Gerrit Updater added a comment - Oleg Drokin (oleg.drokin@intel.com) merged in patch http://review.whamcloud.com/18792/ Subject: LU-7841 doc: stop using python-docutils Project: fs/lustre-release Branch: master Current Patch Set: Commit: 4943ae1975dcd056143db2b31663414c9b1981a7

          no, this isn't correct at all. your patch appears to put back items deliberately removed in the first patch. I suspect you skipped some steps in the build after applying lu7841.patch. You must repeat all the steps including 'sh autopen.sh' and './configure ...'

          bogl Bob Glossman (Inactive) added a comment - no, this isn't correct at all. your patch appears to put back items deliberately removed in the first patch. I suspect you skipped some steps in the build after applying lu7841.patch. You must repeat all the steps including 'sh autopen.sh' and './configure ...'

          I applied the patch but the "make rpm" failed with below error , and then made changes and generated patch LU-7841_vivek.patch.

          make[3]: Entering directory `/usr/src/lustre-2.8.0/lustre/obdclass/linux'
          make[3]: Leaving directory `/usr/src/lustre-2.8.0/lustre/obdclass/linux'
          make[2]: Leaving directory `/usr/src/lustre-2.8.0/lustre/obdclass'
          make[2]: Entering directory `/usr/src/lustre-2.8.0/lustre/ldlm'
          make[2]: Leaving directory `/usr/src/lustre-2.8.0/lustre/ldlm'
          make[2]: Entering directory `/usr/src/lustre-2.8.0/lustre/ptlrpc'
          list='gss'; for subdir in $list; do \
          if test "$subdir" = .; then :; else \
          test -d "/usr/src/lustre-2.8.0/lustre-2.8.0/lustre/ptlrpc/$subdir" \

          /bin/mkdir -p "/usr/src/lustre-2.8.0/lustre-2.8.0/lustre/ptlrpc/$subdir" \
          exit 1; \
          distdir=`CDPATH="${ZSH_VERSION+.}:" && cd /usr/src/lustre-2.8.0/lustre-2.8.0/lustre/ptlrpc && pwd`; \
          top_distdir=`CDPATH="${ZSH_VERSION+.}:" && cd /usr/src/lustre-2.8.0/lustre-2.8.0 && pwd`; \
          (cd $subdir && \
          make \
          top_distdir="$top_distdir" \
          distdir="$distdir/$subdir" \
          am__remove_distdir=: \
          am__skip_length_check=: \
          distdir) \
          exit 1; \
          fi; \
          done
          make[3]: Entering directory `/usr/src/lustre-2.8.0/lustre/ptlrpc/gss'
          make[3]: Leaving directory `/usr/src/lustre-2.8.0/lustre/ptlrpc/gss'
          make[2]: Leaving directory `/usr/src/lustre-2.8.0/lustre/ptlrpc'
          make[2]: Entering directory `/usr/src/lustre-2.8.0/lustre/obdecho'
          make[2]: Leaving directory `/usr/src/lustre-2.8.0/lustre/obdecho'
          make[2]: Entering directory `/usr/src/lustre-2.8.0/lustre/mgc'
          make[2]: Leaving directory `/usr/src/lustre-2.8.0/lustre/mgc'
          make[2]: Entering directory `/usr/src/lustre-2.8.0/lustre/fid'
          make[2]: Leaving directory `/usr/src/lustre-2.8.0/lustre/fid'
          make[2]: Entering directory `/usr/src/lustre-2.8.0/lustre/fld'
          make[2]: Leaving directory `/usr/src/lustre-2.8.0/lustre/fld'
          make[2]: Entering directory `/usr/src/lustre-2.8.0/lustre/doc'
          make[2]: *** No rule to make target `lustreapi.rst', needed by `distdir'. Stop.
          make[2]: Leaving directory `/usr/src/lustre-2.8.0/lustre/doc'
          make[1]: *** [distdir] Error 1
          make[1]: Leaving directory `/usr/src/lustre-2.8.0/lustre'
          make: *** [distdir] Error 1

          The patch I generated is shown below. With this change I was able to complete Make rpms successfully.

          Let me know if this looks right ?

          [ hdtsfna2381 20160314_0509 doc]# cat LU-7841_vivek.patch
          — Makefile.orig 2016-03-14 04:52:03.000000000 -0400
          +++ Makefile 2016-03-14 04:54:50.000000000 -0400
          @@ -332,9 +332,7 @@

          1. Generated manpages with their sources in ReST. Generated files are
          2. not part of the dist target; they may or may not have been
          3. generated (see --disable-manpages option).
            -RST_MANFILES = lustreapi.rst llapi_hsm_action_begin.rst \
          • llapi_hsm_copytool_register.rst
            -
            +RST_MANFILES =
            GEN_MANFILES = lustreapi.7 llapi_hsm_action_begin.3 \
            llapi_hsm_copytool_register.3

          — Makefile.in.orig 2016-03-14 04:52:09.000000000 -0400
          +++ Makefile.in 2016-03-14 04:54:43.000000000 -0400
          @@ -332,9 +332,7 @@

          1. Generated manpages with their sources in ReST. Generated files are
          2. not part of the dist target; they may or may not have been
          3. generated (see --disable-manpages option).
            -RST_MANFILES = lustreapi.rst llapi_hsm_action_begin.rst \
          • llapi_hsm_copytool_register.rst
            -
            +RST_MANFILES =
            GEN_MANFILES = lustreapi.7 llapi_hsm_action_begin.3 \
            llapi_hsm_copytool_register.3

          [ hdtsfna2381 20160314_0513 doc]#

          vivekkra vivek kumar rai (Inactive) added a comment - I applied the patch but the "make rpm" failed with below error , and then made changes and generated patch LU-7841 _vivek.patch. make [3] : Entering directory `/usr/src/lustre-2.8.0/lustre/obdclass/linux' make [3] : Leaving directory `/usr/src/lustre-2.8.0/lustre/obdclass/linux' make [2] : Leaving directory `/usr/src/lustre-2.8.0/lustre/obdclass' make [2] : Entering directory `/usr/src/lustre-2.8.0/lustre/ldlm' make [2] : Leaving directory `/usr/src/lustre-2.8.0/lustre/ldlm' make [2] : Entering directory `/usr/src/lustre-2.8.0/lustre/ptlrpc' list='gss'; for subdir in $list; do \ if test "$subdir" = .; then :; else \ test -d "/usr/src/lustre-2.8.0/lustre-2.8.0/lustre/ptlrpc/$subdir" \ /bin/mkdir -p "/usr/src/lustre-2.8.0/lustre-2.8.0/lustre/ptlrpc/$subdir" \ exit 1; \ distdir=`CDPATH="${ZSH_VERSION+.}:" && cd /usr/src/lustre-2.8.0/lustre-2.8.0/lustre/ptlrpc && pwd`; \ top_distdir=`CDPATH="${ZSH_VERSION+.}:" && cd /usr/src/lustre-2.8.0/lustre-2.8.0 && pwd`; \ (cd $subdir && \ make \ top_distdir="$top_distdir" \ distdir="$distdir/$subdir" \ am__remove_distdir=: \ am__skip_length_check=: \ distdir) \ exit 1; \ fi; \ done make [3] : Entering directory `/usr/src/lustre-2.8.0/lustre/ptlrpc/gss' make [3] : Leaving directory `/usr/src/lustre-2.8.0/lustre/ptlrpc/gss' make [2] : Leaving directory `/usr/src/lustre-2.8.0/lustre/ptlrpc' make [2] : Entering directory `/usr/src/lustre-2.8.0/lustre/obdecho' make [2] : Leaving directory `/usr/src/lustre-2.8.0/lustre/obdecho' make [2] : Entering directory `/usr/src/lustre-2.8.0/lustre/mgc' make [2] : Leaving directory `/usr/src/lustre-2.8.0/lustre/mgc' make [2] : Entering directory `/usr/src/lustre-2.8.0/lustre/fid' make [2] : Leaving directory `/usr/src/lustre-2.8.0/lustre/fid' make [2] : Entering directory `/usr/src/lustre-2.8.0/lustre/fld' make [2] : Leaving directory `/usr/src/lustre-2.8.0/lustre/fld' make [2] : Entering directory `/usr/src/lustre-2.8.0/lustre/doc' make [2] : *** No rule to make target `lustreapi.rst', needed by `distdir'. Stop. make [2] : Leaving directory `/usr/src/lustre-2.8.0/lustre/doc' make [1] : *** [distdir] Error 1 make [1] : Leaving directory `/usr/src/lustre-2.8.0/lustre' make: *** [distdir] Error 1 The patch I generated is shown below. With this change I was able to complete Make rpms successfully. Let me know if this looks right ? [ hdtsfna2381 20160314_0509 doc]# cat LU-7841 _vivek.patch — Makefile.orig 2016-03-14 04:52:03.000000000 -0400 +++ Makefile 2016-03-14 04:54:50.000000000 -0400 @@ -332,9 +332,7 @@ Generated manpages with their sources in ReST. Generated files are not part of the dist target; they may or may not have been generated (see --disable-manpages option). -RST_MANFILES = lustreapi.rst llapi_hsm_action_begin.rst \ llapi_hsm_copytool_register.rst - +RST_MANFILES = GEN_MANFILES = lustreapi.7 llapi_hsm_action_begin.3 \ llapi_hsm_copytool_register.3 — Makefile.in.orig 2016-03-14 04:52:09.000000000 -0400 +++ Makefile.in 2016-03-14 04:54:43.000000000 -0400 @@ -332,9 +332,7 @@ Generated manpages with their sources in ReST. Generated files are not part of the dist target; they may or may not have been generated (see --disable-manpages option). -RST_MANFILES = lustreapi.rst llapi_hsm_action_begin.rst \ llapi_hsm_copytool_register.rst - +RST_MANFILES = GEN_MANFILES = lustreapi.7 llapi_hsm_action_begin.3 \ llapi_hsm_copytool_register.3 [ hdtsfna2381 20160314_0513 doc]#

          apply the patch with the 'patch' command.
          in the root of your lustre source source tree do:

          patch -p1 -i lu7841.patch

          'lu7841.patch' is attached.
          Then just build as you normally would.

          bogl Bob Glossman (Inactive) added a comment - apply the patch with the 'patch' command. in the root of your lustre source source tree do: patch -p1 -i lu7841.patch 'lu7841.patch' is attached. Then just build as you normally would.
          bogl Bob Glossman (Inactive) added a comment - - edited
          bogl Bob Glossman (Inactive) added a comment - - edited patch from http://review.whamcloud.com/18792 attached

          The patch is being reviewed and tested – we will attach it to the ticket when it is ready.

          Thanks,
          ~ jfc.

          jfc John Fuchs-Chesney (Inactive) added a comment - The patch is being reviewed and tested – we will attach it to the ticket when it is ready. Thanks, ~ jfc.

          Hi John,
          I am not sure about location to fetch the patch. Request you to please attach it to this ticket.
          Also please provide the steps to patch.

          Thanks
          Vivek Rai

          vivekkra vivek kumar rai (Inactive) added a comment - Hi John, I am not sure about location to fetch the patch. Request you to please attach it to this ticket. Also please provide the steps to patch. Thanks Vivek Rai

          Hello Vivek,

          Can you see the patch that Bob has uploaded? If not, we can attach it to the ticket.

          Thanks,
          ~ jfc.

          jfc John Fuchs-Chesney (Inactive) added a comment - - edited Hello Vivek, Can you see the patch that Bob has uploaded? If not, we can attach it to the ticket. Thanks, ~ jfc.

          People

            bogl Bob Glossman (Inactive)
            vivekkra vivek kumar rai (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            9 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: