[MacPorts] #41705: gettext: build hangs (was: Install hangs with loop of recursive make invocations)

MacPorts noreply at macports.org
Thu Dec 5 21:36:48 PST 2013


#41705: gettext: build hangs
----------------------+--------------------------
  Reporter:  info@…   |      Owner:  ryandesign@…
      Type:  defect   |     Status:  new
  Priority:  Normal   |  Milestone:
 Component:  ports    |    Version:  2.2.1
Resolution:           |   Keywords:
      Port:  gettext  |
----------------------+--------------------------
Changes (by ryandesign@…):

 * owner:  macports-tickets@… => ryandesign@…
 * port:   => gettext


Old description:

> Trying to install expat and/or gettext hangs.
> The hang prevents me from completely updating outdated ports.
>
> The command
> $ sudo port  install expat
> gets to building gettext:
> Deactivating expat @2.1.0_0+universal
> --->  Cleaning expat
> --->  Activating expat @2.1.0_0
> --->  Cleaning expat
> --->  Scanning binaries for linking errors: 100.0%
> --->  Found 1 broken file(s), matching files to ports
> --->  Found 1 broken port(s), determining rebuild order
> --->  Rebuilding in order
>      gettext @0.18.1.1 +universal
> --->  Computing dependencies for gettext
> --->  Dependencies to be installed: expat
> --->  Deactivating expat @2.1.0_0
> --->  Cleaning expat
> --->  Activating expat @2.1.0_0+universal
> --->  Cleaning expat
> --->  Building get text
> This never ends.
> I hit this bug after self update, while running
> $ port upgrade outdated
>
> The build hangs in a recursive invocation of make that starts with:
> sh -c  cd
> "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_gettext/gettext/work/gettext-0.18.3.1-x86_64"
> && /usr/bin/make -j8 -w all
> and then continues via make executing a build task:
> /bin/sh -c fail=; if (target_option=k; case ${target_option-} in ?) ;; *)
> echo "am__make_running_with_option: internal error: invalid" "target
> option '${target_option-}' specified" >&2; exit 1;; esac; has_opt=no;
> sane_makeflags=$MAKEFLAGS; if test -n ' Makefile' && test -n '0'; then
> sane_makeflags=$MFLAGS; else case $MAKEFLAGS in *\\[\ \^I]*) bs=\\;
> sane_makeflags=`printf '%s\n' "$MAKEFLAGS" | sed "s/$bs$bs[$bs
> $bs^I]*//g"`;; esac; fi; skip_next=no; strip_trailopt () { flg=`printf
> '%s\n' "$flg" | sed "s/$1.*$//"`; }; for flg in $sane_makeflags; do test
> $skip_next = yes && { skip_next=no; continue; }; case $flg in *=*|--*)
> continue;; -*I) strip_trailopt 'I'; skip_next=yes;; -*I?*) strip_trailopt
> 'I';; -*O) strip_trailopt 'O'; skip_next=yes;; -*O?*) strip_trailopt
> 'O';; -*l) strip_trailopt 'l'; skip_next=yes;; -*l?*) strip_trailopt
> 'l';; -[dEDm]) skip_next=yes;; -[JT]) skip_next=yes;; esac; case $flg in
> *$target_option*) has_opt=yes; break;; esac; done; test $has_opt = yes);
> then   failcom='fail=yes'; else   failcom='exit 1'; fi; dot_seen=no;
> target=`echo all-recursive | sed s/-recursive//`; case "all-recursive" in
> distclean-* | maintainer-clean-*) list='gnulib-local gettext-runtime
> gettext-tools' ;;   *) list='gnulib-local gettext-runtime gettext-tools'
> ;; esac; for subdir in $list; do   echo "Making $target in $subdir";   if
> test "$subdir" = "."; then     dot_seen=yes;     local_target="$target-
> am";   else     local_target="$target";   fi;
> (CDPATH="${ZSH_VERSION+.}:" && cd $subdir &&
> /Developer/Applications/Xcode.app/Contents/Developer/usr/bin/make
> $local_target)   || eval $failcom; done; if test "$dot_seen" = "no"; then
> /Developer/Applications/Xcode.app/Contents/Developer/usr/bin/make
> "$target-am" || exit 1; fi; test -z "$fail"
>
> I have log file attached. I killed one of recursive invocations, as shown
> in the log  in attempt to end the build.
>
> system:
> Intel Core i7 @2.3GHz
> OS X 10.9 (13A3017)
> Darwin 13.0.2

New description:

 Trying to install expat and/or gettext hangs.
 The hang prevents me from completely updating outdated ports.

 The command
 {{{
 $ sudo port  install expat
 }}}
 gets to building gettext:
 {{{
 Deactivating expat @2.1.0_0+universal
 --->  Cleaning expat
 --->  Activating expat @2.1.0_0
 --->  Cleaning expat
 --->  Scanning binaries for linking errors: 100.0%
 --->  Found 1 broken file(s), matching files to ports
 --->  Found 1 broken port(s), determining rebuild order
 --->  Rebuilding in order
      gettext @0.18.1.1 +universal
 --->  Computing dependencies for gettext
 --->  Dependencies to be installed: expat
 --->  Deactivating expat @2.1.0_0
 --->  Cleaning expat
 --->  Activating expat @2.1.0_0+universal
 --->  Cleaning expat
 --->  Building get text
 }}}
 This never ends.
 I hit this bug after self update, while running
 {{{
 $ port upgrade outdated
 }}}

 The build hangs in a recursive invocation of make that starts with:
 {{{
 sh -c  cd
 "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_gettext/gettext/work/gettext-0.18.3.1-x86_64"
 && /usr/bin/make -j8 -w all
 }}}
 and then continues via make executing a build task:
 {{{
 /bin/sh -c fail=; if (target_option=k; case ${target_option-} in ?) ;; *)
 echo "am__make_running_with_option: internal error: invalid" "target
 option '${target_option-}' specified" >&2; exit 1;; esac; has_opt=no;
 sane_makeflags=$MAKEFLAGS; if test -n ' Makefile' && test -n '0'; then
 sane_makeflags=$MFLAGS; else case $MAKEFLAGS in *\\[\ \^I]*) bs=\\;
 sane_makeflags=`printf '%s\n' "$MAKEFLAGS" | sed "s/$bs$bs[$bs
 $bs^I]*//g"`;; esac; fi; skip_next=no; strip_trailopt () { flg=`printf
 '%s\n' "$flg" | sed "s/$1.*$//"`; }; for flg in $sane_makeflags; do test
 $skip_next = yes && { skip_next=no; continue; }; case $flg in *=*|--*)
 continue;; -*I) strip_trailopt 'I'; skip_next=yes;; -*I?*) strip_trailopt
 'I';; -*O) strip_trailopt 'O'; skip_next=yes;; -*O?*) strip_trailopt 'O';;
 -*l) strip_trailopt 'l'; skip_next=yes;; -*l?*) strip_trailopt 'l';;
 -[dEDm]) skip_next=yes;; -[JT]) skip_next=yes;; esac; case $flg in
 *$target_option*) has_opt=yes; break;; esac; done; test $has_opt = yes);
 then   failcom='fail=yes'; else   failcom='exit 1'; fi; dot_seen=no;
 target=`echo all-recursive | sed s/-recursive//`; case "all-recursive" in
 distclean-* | maintainer-clean-*) list='gnulib-local gettext-runtime
 gettext-tools' ;;   *) list='gnulib-local gettext-runtime gettext-tools'
 ;; esac; for subdir in $list; do   echo "Making $target in $subdir";   if
 test "$subdir" = "."; then     dot_seen=yes;     local_target="$target-
 am";   else     local_target="$target";   fi;
 (CDPATH="${ZSH_VERSION+.}:" && cd $subdir &&
 /Developer/Applications/Xcode.app/Contents/Developer/usr/bin/make
 $local_target)   || eval $failcom; done; if test "$dot_seen" = "no"; then
 /Developer/Applications/Xcode.app/Contents/Developer/usr/bin/make
 "$target-am" || exit 1; fi; test -z "$fail"
 }}}

 I have log file attached. I killed one of recursive invocations, as shown
 in the log  in attempt to end the build.

 system:
  * Intel Core i7 @2.3GHz
  * OS X 10.9 (13A3017)
  * Darwin 13.0.2

--

Comment:

 Please remember to use WikiFormatting and to preview before submitting.

 gettext builds fine for me. How long did you wait? It is a large package
 and does take awhile to build. Please `sudo port clean gettext` and try
 again. I tested rebuilding gettext +universal just now on my 2.6GHz 4-core
 Core i7 MacBook Pro with OS X 10.9; it took 9 minutes. Since your CPU is
 slightly slower, wait a little longer. If you have fewer cores, or a hard
 disk instead of an SSD, wait longer.

 Note that when you typed `sudo port install expat` above, MacPorts
 deactivated the universal copy of expat you already had installed and
 activated the non-universal copy of expat you already had installed. Then
 it ran rev-upgrade which checks for broken packages, which found that
 gettext was broken (because gettext was installed universal, and gettext
 requires expat, and the architectures must match), so it re-activated the
 universal copy of expat before trying to rebuild gettext. In fact,
 rebuilding gettext might not be necessary at all; possibly the only reason
 it was marked as broken was because you de-universalized its expat
 dependency.

 What does `port outdated` show now? Does `sudo port rev-upgrade` still try
 to rebuild gettext or is it ok now?

-- 
Ticket URL: <https://trac.macports.org/ticket/41705#comment:1>
MacPorts <http://www.macports.org/>
Ports system for OS X


More information about the macports-tickets mailing list