[MacPorts] #42796: gdb-apple @1824: build failure due to texinfo5
#42796: gdb-apple @1824: build failure due to texinfo5 ---------------------+-------------------------------- Reporter: egall@… | Owner: macports-tickets@… Type: defect | Status: new Priority: Normal | Milestone: Component: ports | Version: 2.2.1 Keywords: | Port: gdb-apple ---------------------+-------------------------------- The error looks like this: {{{ ./elf.texi:1: warning: @section missing argument bfd.texinfo:335: unknown command `colophon' bfd.texinfo:346: unknown command `cygnus' ./bfdt.texi:313: raising the section level of @subsubsection which is too low ./init.texi:5: raising the section level of @subsubsection which is too low ./archive.texi:54: raising the section level of @subsubsection which is too low ./format.texi:27: raising the section level of @subsubsection which is too low ./reloc.texi:495: raising the section level of @subsubsection which is too low ./core.texi:8: raising the section level of @subsubsection which is too low ./opncls.texi:5: raising the section level of @subsubsection which is too low ./libbfd.texi:10: raising the section level of @subsubsection which is too low ./cache.texi:14: raising the section level of @subsubsection which is too low ./elf.texi:13: raising the section level of @subsubsection which is too low make[2]: *** [bfd.info] Error 1 make[2]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports .org_release_tarballs_ports_devel_gdb-apple/gdb-apple/work/gdb-1824/src- x86_64/bfd/doc' make[1]: *** [info-recursive] Error 1 make[1]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports .org_release_tarballs_ports_devel_gdb-apple/gdb-apple/work/gdb-1824/src- x86_64/bfd' make: *** [all-bfd] Error 2 make: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports .org_release_tarballs_ports_devel_gdb-apple/gdb-apple/work/gdb-1824/src- x86_64' Command failed: cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports .org_release_tarballs_ports_devel_gdb-apple/gdb-apple/work/gdb-1824/src- x86_64" && /usr/bin/make -w all MAKEINFO="/opt/local/bin/makeinfo" LEXLIB="/opt/local/lib/libfl.a" Exit code: 2 Error: org.macports.build for port gdb-apple returned: command execution failed DEBUG: Error code: NONE DEBUG: Backtrace: command execution failed }}} Whenever I ran into this error when building my fork of gdb-apple manually, I would always work around it by making sure that a copy of texinfo4 appeared first in my path... I guess the solution here would be to use the system `makeinfo` (i.e. `/usr/bin/makeinfo`) here instead of the MacPorts one, as that is still version 4, at least on my machine: {{{ Local-Admins-MacBook-Pro:~ ericgallager$ /usr/bin/makeinfo --version makeinfo (GNU texinfo) 4.8 Copyright (C) 2004 Free Software Foundation, Inc. There is NO warranty. You may redistribute this software under the terms of the GNU General Public License. For more information about these matters, see the files named COPYING. }}} -- Ticket URL: <https://trac.macports.org/ticket/42796> MacPorts <http://www.macports.org/> Ports system for OS X
#42796: gdb-apple @1824: build failure due to texinfo5 ------------------------+-------------------------------- Reporter: egall@… | Owner: macports-tickets@… Type: defect | Status: new Priority: Normal | Milestone: Component: ports | Version: 2.2.1 Resolution: | Keywords: Port: gdb-apple | ------------------------+-------------------------------- Comment (by egall@…): Oops, my logfile for the original error got overwritten by the one from when it built successfully after I modified the Portfile... -- Ticket URL: <https://trac.macports.org/ticket/42796#comment:1> MacPorts <http://www.macports.org/> Ports system for OS X
#42796: gdb-apple @1824: build failure due to texinfo5 ------------------------+-------------------------------- Reporter: egall@… | Owner: macports-tickets@… Type: defect | Status: new Priority: Normal | Milestone: Component: ports | Version: 2.2.1 Resolution: | Keywords: Port: gdb-apple | ------------------------+-------------------------------- Comment (by ntraft@…): Hey Eric, could you post instructions for what changes are necessary to the Portfile? The confusing thing here is that even though it output an error, I still have a gdb-apple binary in my bin/ folder, and it seems to work just fine... makeinfo also looks like it's there... are these prebuilt binaries? Why am I seeing this error? -- Ticket URL: <https://trac.macports.org/ticket/42796#comment:3> MacPorts <http://www.macports.org/> Ports system for OS X
#42796: gdb-apple @1824: build failure due to texinfo5 ------------------------+-------------------------------- Reporter: egall@… | Owner: macports-tickets@… Type: defect | Status: new Priority: Normal | Milestone: Component: ports | Version: 2.2.1 Resolution: | Keywords: Port: gdb-apple | ------------------------+-------------------------------- Comment (by egall@…): Replying to [comment:3 ntraft@…]:
Hey Eric, could you post instructions for what changes are necessary to the Portfile?
Well I have made a bunch of changes to the portfile in general, so I am not really sure which ones were the necessary ones... I suppose I can try to walk through them though... The first hunk is mostly just whitespace changes, so we can skip over it (I like my lines wrapped a little tighter than normal): {{{ #!diff --- Portfile (revision 108929) +++ Portfile (working copy) @@ -6,25 +6,31 @@ name gdb-apple version 1824 +revision 1 categories devel license GPL-2+ maintainers jeremyhu openmaintainer -description GDB: The GNU Project Debugger with Apple Modifications (based on 6.3.50) +description GDB: The GNU Project Debugger with Apple Modifications \ + (based on 6.3.50) long_description \ -GDB, the GNU Project debugger, allows you to see what is going on 'inside' \ -another program while it executes -- or what another program was doing at the \ -moment it crashed. GDB can do four main kinds of things (plus other things \ -in support of these) to help you catch bugs in the act: \ - a) start your program, specifying anything that might affect its behavior, \ - b) make your program stop on specified conditions, \ - c) examine what has happened, when your program has stopped, \ - d) change things in your program, so you can experiment with correcting \ - the effects of one bug and go on to learn about another. \ -The program being debugged can be written in Ada, C, C++, Objective-C, \ -Pascal (and many other languages). Those programs might be executing on \ -the same machine as GDB (native) or on another machine (remote). GDB \ -can run on most popular UNIX and Microsoft Windows variants. +GDB, the GNU Project debugger, allows you to see what is going on \ +'inside' another program while it executes -- or what another program was \ +doing at the moment it crashed. GDB can do four main kinds of things \ +(plus other things in support of these) to help you catch bugs in action: \ +\n\ + a) start your program, specifying anything that might affect its \ + behavior, \n\ + b) make your program stop on specified conditions, \n\ + c) examine what has happened, when your program has stopped, \n\ + d) change things in your program, so you can experiment with \ + correcting the effects of 1 bug and go on to learn about another.\n\ +\n\ +The program being debugged can be written in Ada, C, C++, Objective-C, or \ +Pascal, as well as many other languages. Those programs might be \ +executing on the same machine as GDB (native) or on another machine \ +(remote). GDB can run on most popular UNIX and Microsoft Windows variants \ +(this version is primarily for OS X though). homepage http://opensource.apple.com/source/gdb platforms darwin }}} In the next hunk I removed the dependency on texinfo and replaced it with a dependency on gsed, because there is some tricky `sed` usage that I was trying to silence a warning from... `gsed` is not strictly necessary though. [[BR]] I also added some library dependencies that `otool -L` said were linked against, and that `nm -m` confirmed that symbols were used from; but those are not relevant to the `makeinfo` parts though. [[BR]] I also added a comment explaining why `worksrcdir` has to be changed. [[BR]] Also all the "`-append`"s are because I always use "`-append`" by default, just in case, ''unless'' I specifically need to override something. Those additions can be ignored though: {{{ #!diff --- Portfile (revision 108929) +++ Portfile (working copy) @@ -39,9 +45,22 @@ checksums rmd160 90290c3950dd06c1691a477b9ee302c00b681ed1 \ sha256 d25b056a826015e1e0ea338b9b8f03e40dce3ff4696faf95df259ae1a42698da -depends_build port:gettext port:zlib port:flex port:texinfo - -worksrcdir ${worksrcdir}/src +depends_build-append \ + port:gettext \ + port:zlib \ + port:flex \ + port:gsed +# Removed texinfo because we now force the use of the system makeinfo + +# port-depcheck.sh reports these linkages: +depends_lib-append \ + port:libiconv \ + port:ncurses \ + port:sqlite3 + +# The configure script is one level deeper; the top-level Makefile is +# hand-written and full of Apple-internal-specific things: +worksrcdir ${worksrcdir}/src post-patch { # https://trac.macports.org/ticket/37790 }}} In this next hunk I tried some additional configure arguments. None of them led to any actual changes though, so they can probably be ignored: {{{ #!diff --- Portfile (revision 108929) +++ Portfile (working copy) @@ -51,19 +70,82 @@ ${worksrcpath}/bfd/configure.host } -configure.args \ +configure.args-append \ --infodir=${prefix}/share/info \ --mandir=${prefix}/share/man \ --with-docdir=${prefix}/share/doc \ --program-suffix=-apple \ - --disable-werror + --disable-werror \ + --with-mpfr=${prefix} \ + --with-gmp=${prefix} \ + --enable-libada \ + --enable-libssp + }}} In this next hunk I tried setting a bunch of environment variables. [[BR]] The `GSED` one forces the use of the gsed port that I added a build dependency on above. [[BR]] I just realized that the values to `MAKEINFO` are different in the configure and build environments, but that is okay, because either one works, at least on my machine. If we want to be consistent, though, it might make more sense to stick with the one with `missing` in it, as that would be safer. [[BR]] All the variables with "`MSG`" somewhere in them, and the other variables around there, are to try to force the usage of the gettext port from MacPorts. They are not strictly necessary though. [[BR]] A lot of the variables with "`RC_`" in them, and the other variables around there, are to try to simulate being inside a `darwinbuild` environment, which was part of my attempts to get the project to build from the top-level Makefile instead of from the one that we currently use in `src/`. I never managed to get that to work though, so those variables can probably be ignored as well. [[BR]] Clearing the value of `READELF_PROG` was because I had been experiencing a build failure with it, and this was an attempt to try to fix that. Although that might have just been copied from my work on the Portfile for the FSF version of gdb, so I am not sure if it is strictly necessary here as well... [[BR]] (Note that this hunk of the diff is not actually a separate hunk; I just split it off from the previous one so that I could fit these comments in here) {{{ #!diff --- Portfile (revision 108929) +++ Portfile (working copy) @@ -60,10 +83,69 @@ + +configure.env-append \ + SED=${prefix}/bin/gsed \ + MSGFMT=${prefix}/bin/msgfmt \ + GMSGFMT=${prefix}/bin/msgfmt \ + XGETTEXT=${prefix}/bin/xgettext \ + MSGMERGE=${prefix}/bin/msgmerge \ + MAKEINFO="${worksrcpath}/missing makeinfo" \ + INSTALLED_PRODUCT_ASIDES=YES \ + RC_JASPER=YES \ + RC_NONARCH_CFLAGS="${configure.optflags}" \ + RC_XBS=YES \ + SEPARATE_STRIP=YES \ + UNAME_RELEASE="${os.version}" \ + HOST_ARCHITECTURE="${configure.build_arch}" + +platform macosx { + configure.args-append \ + --enable-carbon-framework \ + --enable-debug-symbols-framework + configure.env-append \ + RC_OS=macos \ + RC_TARGET_CONFIG=MacOSX + build.env-append \ + RC_OS=macos \ + RC_TARGET_CONFIG=MacOSX +} + +platform darwin { + configure.env-append \ + RC_PRIVATE=/private \ + UNAME_SYSNAME=Darwin \ + NEXT_ROOT="" + build.env-append \ + RC_PRIVATE=/private \ + UNAME_SYSNAME=Darwin \ + NEXT_ROOT="" +} + +build.args-append \ + MAKEINFO="/usr/bin/makeinfo" \ + LEXLIB="${prefix}/lib/libfl.a" \ + READELF_PROG="" + +build.env-append \ + MAKEINFO="/usr/bin/makeinfo" \ + LEXLIB="${prefix}/lib/libfl.a" \ + SED=${prefix}/bin/gsed \ + MSGFMT=${prefix}/bin/msgfmt \ + GMSGFMT=${prefix}/bin/msgfmt \ + XGETTEXT=${prefix}/bin/xgettext \ + MSGMERGE=${prefix}/bin/msgmerge \ + INSTALLED_PRODUCT_ASIDES=YES \ + RC_JASPER=YES \ + RC_XBS=YES \ + SEPARATE_STRIP=YES \ + UNAME_RELEASE="${os.version}" \ + HOST_ARCHITECTURE="${build_arch}" \ + READELF_PROG="" -build.args \ - MAKEINFO="${prefix}/bin/makeinfo" \ +destroot.args-append \ + MAKEINFO="/usr/bin/makeinfo" \ LEXLIB="${prefix}/lib/libfl.a" -destroot.args \ - MAKEINFO="${prefix}/bin/makeinfo" \ +destroot.env-append \ + MAKEINFO="/usr/bin/makeinfo" \ LEXLIB="${prefix}/lib/libfl.a" post-destroot { }}} Finally, in this last hunk, instead of deleting stuff, I solved some conflicts with other ports by renaming the files instead of deleting them. I also had destroot install some additional files that I considered to be useful. This part is all taking place after the place where the `makeinfo` failure had occurred though, so these next changes are not actually strictly relevant to this issue: {{{ #!diff --- Portfile (revision 108929) +++ Portfile (working copy) @@ -74,12 +156,26 @@ move ${destroot}${prefix}/share/info/${info} ${destroot}${prefix}/share/info/apple-${info} } - eval delete [glob ${destroot}${prefix}/lib/*.{,l}a] - eval delete [glob ${destroot}${prefix}/bin/{addr2line,ar,c*filt,nm,objcopy,objdump,ranlib,readelf,size,strings,strip}-apple] + # avoid conflicts with other gdb/binutils installations from MacPorts: + xinstall -d ${destroot}${prefix}/lib/${name} + eval move [glob ${destroot}${prefix}/lib/*.{,l}a] ${destroot}${prefix}/lib/${name} + eval reinplace "s|${prefix}/lib|${prefix}/lib/${name}|g" [glob ${destroot}${prefix}/lib/${name}/*.la] + xinstall -d ${destroot}${prefix}/include/${name} + eval move [glob ${destroot}${prefix}/include/*.h] ${destroot}${prefix}/include/${name} + xinstall -d ${destroot}${prefix}/share/info/${name} + eval move [glob ${destroot}${prefix}/share/info/{annotate,bfd,stabs}.info] ${destroot}${prefix}/share/info/${name} + foreach msgs [glob ${destroot}${prefix}/share/locale/*/LC_MESSAGES/*.mo] { + if [file isfile ${msgs}] { + move ${msgs} [file dirname ${msgs}]/${name}-[file tail ${msgs}] + } + } + xinstall -d ${destroot}${prefix}/share/${name} + eval xinstall -m 644 [glob ${worksrcpath}/../conf/*.gdb] ${destroot}${prefix}/share/${name} + xinstall -d ${destroot}${prefix}/etc/${name} + xinstall ${worksrcpath}/../gdb.conf ${destroot}${prefix}/etc/${name} + xinstall -d ${destroot}${prefix}/share/doc/${name} + xinstall ${worksrcpath}/../doc/refcard.pdf ${destroot}${prefix}/share/doc/${name} eval delete [glob ${destroot}${prefix}/*darwin*] - eval delete [glob ${destroot}${prefix}/include/*.h] - eval delete [glob ${destroot}${prefix}/share/info/{annotate,bfd,stabs}.info] - eval delete [glob ${destroot}${prefix}/share/locale/*/LC_MESSAGES/{bfd,binutils,opcodes}.mo] } if {${os.platform} eq "darwin" && ${os.major} >= 12} { }}} So, to summarize, the changes that fixed the `texinfo` issue for me here were to append `MAKEINFO="${worksrcpath}/missing makeinfo"` to the configure environment, and to change the `MAKEINFO="${prefix}/bin/makeinfo"` entry in the build and destroot environment to be `MAKEINFO="/usr/bin/makeinfo"` instead, and to remove the dependency on `texinfo`. Those ones are the relevant ones here; the rest can be ignored. Replying to [comment:3 ntraft@…]:
The confusing thing here is that even though it output an error, I still have a gdb-apple binary in my bin/ folder, and it seems to work just fine... makeinfo also looks like it's there... are these prebuilt binaries? Why am I seeing this error?
Which `bin/` folder? The one in your prefix? It could just be a previous version. And `makeinfo` already being in the `bin/` folder in your prefix is what was causing this issue in the first place. If you meant that a new gdb-apple binary still gets built, though, it could just be parallelism in `make` causing the libraries that `gdb-apple` needs to get built before the documentation... -- Ticket URL: <https://trac.macports.org/ticket/42796#comment:5> MacPorts <http://www.macports.org/> Ports system for OS X
#42796: gdb-apple @1824: build failure due to texinfo5 ------------------------+-------------------------------- Reporter: egall@… | Owner: macports-tickets@… Type: defect | Status: new Priority: Normal | Milestone: Component: ports | Version: 2.2.1 Resolution: | Keywords: Port: gdb-apple | ------------------------+-------------------------------- Comment (by jeremyhu@…): can you please just attach the patch? -- Ticket URL: <https://trac.macports.org/ticket/42796#comment:6> MacPorts <http://www.macports.org/> Ports system for OS X
participants (1)
-
MacPorts