Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[package] m4/1.4.19: Build failure in doc when cross-compiling (+ dirty solution) #25286

Open
wdobbe opened this issue Sep 16, 2024 · 0 comments
Labels
bug Something isn't working

Comments

@wdobbe
Copy link
Contributor

wdobbe commented Sep 16, 2024

Description

While trying to cross-compile CCI Qt 6.7.1 I encountered the following build failure in dependency m4 (full log below):

Making all in doc
make[2]: Entering directory '/home/wdobbe/.conan2/p/b/m42f51b119b1fa4/b/build-release/doc'
Updating man page m4.1
help2man: can't get `--help' info from ../src/m4
Try `--no-discard-stderr' if option outputs to stderr
make[2]: *** [Makefile:2449: /home/wdobbe/.conan2/p/b/m42f51b119b1fa4/b/src/doc/m4.1] Error 126
make[2]: Leaving directory '/home/wdobbe/.conan2/p/b/m42f51b119b1fa4/b/build-release/doc'
make[1]: *** [Makefile:2018: all-recursive] Error 1
make[1]: Leaving directory '/home/wdobbe/.conan2/p/b/m42f51b119b1fa4/b/build-release'
make: *** [Makefile:1974: all] Error 2

m4/1.4.19: ERROR: 
Package '873a094f947c14d896ab0929156f4bea0db3d5d2' build failed

help2man tries to run the compiled m4 executable with argument '--help'. This fails because the cross-compiled executable is not runnable on x86_64.
For now I solved it with the following (dirty) patch that prevents that the documentation is build:

--- conanfile.py.org    2024-09-16 17:00:58.495031078 +0200
+++ conanfile.py        2024-09-16 16:59:11.205533912 +0200
@@ -1,7 +1,7 @@
 from conan import ConanFile
 from conan.tools.build import cross_building
 from conan.tools.env import VirtualBuildEnv
-from conan.tools.files import apply_conandata_patches, copy, export_conandata_patches, get, rmdir, save
+from conan.tools.files import apply_conandata_patches, copy, export_conandata_patches, get, rmdir, save, replace_in_file
 from conan.tools.gnu import Autotools, AutotoolsToolchain
 from conan.tools.layout import basic_layout
 from conan.tools.microsoft import is_msvc, unix_path
@@ -112,6 +112,7 @@
         self._patch_sources()
         autotools = Autotools(self)
         autotools.configure()
+        replace_in_file(self, os.path.join(self.build_folder, 'Makefile'), search="SUBDIRS = . examples lib src doc checks po tests", replace="SUBDIRS = . examples lib src checks po tests")
         autotools.make()
 
     def package(self):
(python39env) wdobbe@dev-linux-bs03:~/.conan2/p/m4512cc8aabbc4c/e> vi conanfile.py
(python39env) wdobbe@dev-linux-bs03:~/.conan2/p/m4512cc8aabbc4c/e> 
(python39env) wdobbe@dev-linux-bs03:~/.conan2/p/m4512cc8aabbc4c/e> 
(python39env) wdobbe@dev-linux-bs03:~/.conan2/p/m4512cc8aabbc4c/e> 
(python39env) wdobbe@dev-linux-bs03:~/.conan2/p/m4512cc8aabbc4c/e> 
(python39env) wdobbe@dev-linux-bs03:~/.conan2/p/m4512cc8aabbc4c/e> diff -u conanfile.py.org conanfile.py
--- conanfile.py.org    2024-09-16 17:00:58.495031078 +0200
+++ conanfile.py        2024-09-16 17:03:15.222036525 +0200
@@ -1,7 +1,7 @@
 from conan import ConanFile
 from conan.tools.build import cross_building
 from conan.tools.env import VirtualBuildEnv
-from conan.tools.files import apply_conandata_patches, copy, export_conandata_patches, get, rmdir, save
+from conan.tools.files import apply_conandata_patches, copy, export_conandata_patches, get, rmdir, save, replace_in_file
 from conan.tools.gnu import Autotools, AutotoolsToolchain
 from conan.tools.layout import basic_layout
 from conan.tools.microsoft import is_msvc, unix_path
@@ -112,6 +112,8 @@
         self._patch_sources()
         autotools = Autotools(self)
         autotools.configure()
+        if cross_building(self):
+            replace_in_file(self, os.path.join(self.build_folder, 'Makefile'), search="SUBDIRS = . examples lib src doc checks po tests", replace="SUBDIRS = . examples lib src checks po tests")
         autotools.make()
 
     def package(self):

I hope that someone with more autotools knowledge knows a better fix.

Package and Environment Details

  • Package Name/Version: m4/1.4.19
  • Operating System+version: Linux SUSE Linux Enterprise Server 15 SP5
  • Compiler+version: GCC 13 (build) / gcc 11 (host)
  • Conan version: conan 2.7.1
  • Python version: Python 3.9.15

Conan profile

Host profile:
[settings]
arch=cortexa7
build_type=Release
compiler=gcc
compiler.cppstd=17
compiler.libcxx=libstdc++11
compiler.version=11
os=Linux
os.distro=None
[tool_requires]
*: swpt_build_env_cortexa7/2019@swpt/stable

Build profile:
[settings]
arch=x86_64
build_type=Release
compiler=gcc
compiler.cppstd=17
compiler.libcxx=libstdc++11
compiler.version=13
os=Linux
os.distro=Suse15
[conf]
tools.build:compiler_executables={'c': '/usr/bin/gcc-13', 'cpp': '/usr/bin/g++-13'}

Steps to reproduce

Cross-compile m4/1.4.19

Logs

Click to expand log (build step only)
m4/1.4.19: RUN: make -j64
make  all-recursive
make[1]: Entering directory '/home/wdobbe/.conan2/p/b/m42f51b119b1fa4/b/build-release'
Making all in .
make[2]: Entering directory '/home/wdobbe/.conan2/p/b/m42f51b119b1fa4/b/build-release'
make[2]: Nothing to be done for 'all-am'.
make[2]: Leaving directory '/home/wdobbe/.conan2/p/b/m42f51b119b1fa4/b/build-release'
Making all in examples
make[2]: Entering directory '/home/wdobbe/.conan2/p/b/m42f51b119b1fa4/b/build-release/examples'
make[2]: Nothing to be done for 'all'.
make[2]: Leaving directory '/home/wdobbe/.conan2/p/b/m42f51b119b1fa4/b/build-release/examples'
Making all in lib
make[2]: Entering directory '/home/wdobbe/.conan2/p/b/m42f51b119b1fa4/b/build-release/lib'
  GEN      alloca.h
  GEN      configmake.h
  GEN      fcntl.h
  GEN      dirent.h
  GEN      getopt.h
  GEN      getopt-cdefs.h
  GEN      iconv.h
  GEN      inttypes.h
  GEN      langinfo.h
  GEN      limits.h
  GEN      locale.h
  GEN      sched.h
  GEN      signal.h
  GEN      math.h
  GEN      sigsegv.h
  GEN      spawn.h
  GEN      stdlib.h
  GEN      stdio.h
  GEN      string.h
  GEN      sys/stat.h
  GEN      sys/types.h
  GEN      sys/random.h
  GEN      time.h
  GEN      sys/wait.h
  GEN      unistd.h
  GEN      unistr.h
  GEN      unitypes.h
  GEN      uniwidth.h
  GEN      wchar.h
  GEN      wctype.h
make  all-am
make[3]: Entering directory '/home/wdobbe/.conan2/p/b/m42f51b119b1fa4/b/build-release/lib'
  CC       asyncsafe-spin.o
  CC       openat-proc.o
  CC       gl_avltree_oset.o
  CC       basename-lgpl.o
  CC       binary-io.o
  CC       bitrotate.o
  CC       c-ctype.o
  CC       c-strcasecmp.o
  CC       c-stack.o
  CC       c-strncasecmp.o
  CC       clean-temp.o
  CC       canonicalize.o
  CC       cloexec.o
  CC       clean-temp-simple.o
  CC       closein.o
  CC       closeout.o
  CC       close-stream.o
  CC       concat-filename.o
  CC       basename.o
  CC       dirname.o
  CC       dirname-lgpl.o
  CC       stripslash.o
  CC       execute.o
  CC       exitfail.o
  CC       fatal-signal.o
  CC       fd-safer-flag.o
  CC       fd-hook.o
  CC       dup-safer-flag.o
  CC       filenamecat.o
  CC       file-set.o
  CC       filenamecat-lgpl.o
  CC       findprog-in.o
  CC       fopen-safer.o
  CC       freading.o
  CC       getprogname.o
  CC       hard-locale.o
  CC       hash.o
  CC       hash-pjw.o
  CC       hash-triple-simple.o
  CC       gl_linked_list.o
  CC       gl_linkedhash_list.o
  CC       gl_list.o
  CC       localcharset.o
  CC       localename.o
  CC       localename-table.o
  CC       math.o
  CC       malloca.o
  CC       mbchar.o
  CC       mbiter.o
  CC       mbslen.o
  CC       mbsstr.o
  CC       mbuiter.o
  CC       memchr2.o
  CC       openat-die.o
  CC       pipe2.o
  CC       pipe2-safer.o
  CC       printf-frexp.o
  CC       gl_oset.o
  CC       printf-frexpl.o
  CC       progname.o
  CC       propername.o
  CC       quotearg.o
  CC       save-cwd.o
  CC       malloc/scratch_buffer_dupfree.o
  CC       malloc/scratch_buffer_grow.o
  CC       malloc/scratch_buffer_grow_preserve.o
  CC       malloc/scratch_buffer_set_array_size.o
  CC       setlocale_null.o
  CC       sig-handler.o
  CC       sigsegv.o
  CC       stackvma.o
  CC       spawn-pipe.o
  CC       stat-time.o
  CC       striconv.o
  CC       mkstemp-safer.o
  CC       tempname.o
  CC       strnlen1.o
  CC       glthread/threadlib.o
  CC       tmpdir.o
  CC       glthread/tls.o
  CC       trim.o
  CC       unistd.o
  CC       dup-safer.o
  CC       fd-safer.o
/home/wdobbe/.conan2/p/b/m42f51b119b1fa4/b/src/lib/canonicalize.c: In function 'canonicalize_filename_mode':
  CC       pipe-safer.o
/home/wdobbe/.conan2/p/b/m42f51b119b1fa4/b/src/lib/canonicalize.c:484:5: warning: #warning "GCC might issue a bogus -Wreturn-local-addr warning here." [-Wcpp]
  484 |    #warning "GCC might issue a bogus -Wreturn-local-addr warning here."
      |     ^~~~~~~
/home/wdobbe/.conan2/p/b/m42f51b119b1fa4/b/src/lib/canonicalize.c:485:5: warning: #warning "See <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93644>." [-Wcpp]
  485 |    #warning "See <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93644>."
      |     ^~~~~~~
  CC       verror.o
  CC       version-etc-fsf.o
  CC       version-etc.o
  CC       wait-process.o
  CC       wctype-h.o
  CC       xmalloc.o
  CC       xalloc-die.o
  CC       xmalloca.o
  CC       gl_xlist.o
  CC       gl_xoset.o
  CC       xprintf.o
  CC       xsize.o
  CC       xstriconv.o
  CC       xstrndup.o
  CC       xvasprintf.o
  CC       xasprintf.o
  CC       asnprintf.o
  CC       chdir-long.o
  CC       fclose.o
  CC       fcntl.o
  CC       fflush.o
  CC       fpurge.o
  CC       freadahead.o
  CC       fseek.o
  CC       getcwd.o
  CC       fseeko.o
  CC       getcwd-lgpl.o
  CC       getopt1.o
  CC       mbrtowc.o
  CC       memchr.o
  CC       obstack.o
  CC       printf-args.o
  CC       getopt.o
  CC       printf-parse.o
  CC       regex.o
  CC       spawn_faction_addchdir.o
  CC       strerror.o
  CC       strstr.o
  CC       vasnprintf.o
  CC       malloc/dynarray_at_failure.o
  CC       malloc/dynarray_emplace_enlarge.o
  CC       malloc/dynarray_finalize.o
  CC       malloc/dynarray_resize.o
  CC       malloc/dynarray_resize_clear.o
  CC       glthread/lock.o
  CC       unistr/u8-uctomb.o
  CC       unistr/u8-mbtoucr.o
  CC       unistr/u8-uctomb-aux.o
  CC       uniwidth/width.o
  AR       libm4.a
make[3]: Leaving directory '/home/wdobbe/.conan2/p/b/m42f51b119b1fa4/b/build-release/lib'
make[2]: Leaving directory '/home/wdobbe/.conan2/p/b/m42f51b119b1fa4/b/build-release/lib'
Making all in src
make[2]: Entering directory '/home/wdobbe/.conan2/p/b/m42f51b119b1fa4/b/build-release/src'
  CC       m4.o
  CC       builtin.o
  CC       debug.o
  CC       eval.o
  CC       format.o
  CC       freeze.o
  CC       input.o
  CC       macro.o
  CC       output.o
  CC       path.o
  CC       symtab.o
  CCLD     m4
make[2]: Leaving directory '/home/wdobbe/.conan2/p/b/m42f51b119b1fa4/b/build-release/src'
Making all in doc
make[2]: Entering directory '/home/wdobbe/.conan2/p/b/m42f51b119b1fa4/b/build-release/doc'
Updating man page m4.1
help2man: can't get `--help' info from ../src/m4
Try `--no-discard-stderr' if option outputs to stderr
make[2]: *** [Makefile:2449: /home/wdobbe/.conan2/p/b/m42f51b119b1fa4/b/src/doc/m4.1] Error 126
make[2]: Leaving directory '/home/wdobbe/.conan2/p/b/m42f51b119b1fa4/b/build-release/doc'
make[1]: *** [Makefile:2018: all-recursive] Error 1
make[1]: Leaving directory '/home/wdobbe/.conan2/p/b/m42f51b119b1fa4/b/build-release'
make: *** [Makefile:1974: all] Error 2

m4/1.4.19: ERROR: 
Package '873a094f947c14d896ab0929156f4bea0db3d5d2' build failed
m4/1.4.19: WARN: Build folder /home/wdobbe/.conan2/p/b/m42f51b119b1fa4/b/build-release
ERROR: m4/1.4.19: Error in build() method, line 115
        autotools.make()
        ConanException: Error 2 while executing
Installation of dependencies (Conan) failed, build stopped.
@wdobbe wdobbe added the bug Something isn't working label Sep 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant