Discussion:
[Bug-wget] Failed 1.19.5 install on Solaris 11.3
Jeffrey Walton
2018-07-18 10:58:09 UTC
Permalink
Hi Everyone,

I'm working from the Wget 1.19.5 tarball. 'make install' is failing on
Solaris 11.3. Is there any way to avoid the automake version checks?
As it stands I'm in a DoS situation because I need an updated Wget.

It has been my experience it is nearly impossible to update Autotools
(I have never been able to do it on Linux or Solaris). I am stuck with
the tools Oracle ships with Solaris.

Thanks in advance.

Jeff

==================

$ sudo make install
...

echo ' cd .. && /bin/sh
/export/home/build/wget-1.19.5/build-aux/missing automake-1.15 --gnu
fuzz/Makefile'; \
CDPATH="${ZSH_VERSION+.}:" && cd .. && \
/bin/sh /export/home/build/wget-1.19.5/build-aux/missing
automake-1.15 --gnu fuzz/Makefile
make: Fatal error: Command failed for target `Makefile.in'
Current working directory /export/home/build/wget-1.19.5/fuzz
*** Error code 1
The following command caused the error:
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 { if test -z '1'; then
false; elif test -n ''; then true; elif test -n '' && test -n '';
then true; else false; fi; }; then sane_makeflags=$MFLAGS; else
case $MAKEFLAGS in *\\[\ \ ]*) bs=\\; sane_makeflags=`printf
'%s\n' "$MAKEFLAGS" | sed "s/$bs$bs[$bs $bs ]*//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 install-recursive | sed s/-recursive//`; \
case "install-recursive" in \
distclean-* | maintainer-clean-*) list='lib src doc po util fuzz
tests testenv' ;; \
*) list='lib src doc po util fuzz tests testenv' ;; \
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 && make $local_target) \
|| eval $failcom; \
done; \
if test "$dot_seen" = "no"; then \
make "$target-am" || exit 1; \
fi; test -z "$fail"
make: Fatal error: Command failed for target `install-recursive'
Current working directory /export/home/build/wget-1.19.5
*** Error code 1
make: Fatal error: Command failed for target `install'
Tim Rühsen
2018-07-18 11:14:20 UTC
Permalink
Maybe it's an bash/sh incompatibility. Anyways - what does 'make
install' do !? It basically copies the 'wget' executable into a
directory (e.g. /usr/local/bin/) that is listed in your PATH env variable.

You can do that by hand. If you want the updated man file, copy wget.1
into your man1 directory (e.g. /usr/local/share/man/man1/).

Regards, Tim
Post by Jeffrey Walton
Hi Everyone,
I'm working from the Wget 1.19.5 tarball. 'make install' is failing on
Solaris 11.3. Is there any way to avoid the automake version checks?
As it stands I'm in a DoS situation because I need an updated Wget.
It has been my experience it is nearly impossible to update Autotools
(I have never been able to do it on Linux or Solaris). I am stuck with
the tools Oracle ships with Solaris.
Thanks in advance.
Jeff
==================
$ sudo make install
...
echo ' cd .. && /bin/sh
/export/home/build/wget-1.19.5/build-aux/missing automake-1.15 --gnu
fuzz/Makefile'; \
CDPATH="${ZSH_VERSION+.}:" && cd .. && \
/bin/sh /export/home/build/wget-1.19.5/build-aux/missing
automake-1.15 --gnu fuzz/Makefile
make: Fatal error: Command failed for target `Makefile.in'
Current working directory /export/home/build/wget-1.19.5/fuzz
*** Error code 1
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 { if test -z '1'; then
false; elif test -n ''; then true; elif test -n '' && test -n '';
then true; else false; fi; }; then sane_makeflags=$MFLAGS; else
case $MAKEFLAGS in *\\[\ \ ]*) bs=\\; sane_makeflags=`printf
'%s\n' "$MAKEFLAGS" | sed "s/$bs$bs[$bs $bs ]*//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 install-recursive | sed s/-recursive//`; \
case "install-recursive" in \
distclean-* | maintainer-clean-*) list='lib src doc po util fuzz
tests testenv' ;; \
*) list='lib src doc po util fuzz tests testenv' ;; \
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 && make $local_target) \
|| eval $failcom; \
done; \
if test "$dot_seen" = "no"; then \
make "$target-am" || exit 1; \
fi; test -z "$fail"
make: Fatal error: Command failed for target `install-recursive'
Current working directory /export/home/build/wget-1.19.5
*** Error code 1
make: Fatal error: Command failed for target `install'
Jeffrey Walton
2018-07-18 12:53:05 UTC
Permalink
Post by Tim Rühsen
Maybe it's an bash/sh incompatibility. Anyways - what does 'make
install' do !? It basically copies the 'wget' executable into a
directory (e.g. /usr/local/bin/) that is listed in your PATH env variable.
You can do that by hand. If you want the updated man file, copy wget.1
into your man1 directory (e.g. /usr/local/share/man/man1/).
thanks.

It appears things are not getting as far as an install. My bad.

$ make
make all-recursive
Making all in lib
make all-recursive
Making all in src
make all-am
Making all in doc
Making all in po
Making all in util
Making all in fuzz
cd .. && /bin/sh
/export/home/jwalton/Build-Scripts/wget-1.19.5/build-aux/missing
automake-1.15 --gnu fuzz/Makefile
/export/home/jwalton/Build-Scripts/wget-1.19.5/build-aux/missing[81]:
automake-1.15: not found [No such file or directory]
WARNING: 'automake-1.15' is missing on your system.
You should only need it if you modified 'Makefile.am' or
'configure.ac' or m4 files included by 'configure.ac'.
The 'automake' program is part of the GNU Automake package:
<http://www.gnu.org/software/automake>
It also requires GNU Autoconf, GNU m4 and Perl in order to run:
<http://www.gnu.org/software/autoconf>
<http://www.gnu.org/software/m4/>
<http://www.perl.org/>
*** Error code 127
Darshit Shah
2018-07-18 12:59:29 UTC
Permalink
Are you trying to compile Wget from git? Or are you using the tarballs?

If you are using the tarballs, this should not happen unless you have modified
some of the build files. In which case, I would ask you to share your changes
with us so that we can fix the build for everyone.

You should not require automake to compile and install Wget. In case you do,
you can run that step on a different / newer machine (Even Linux updated 5
minutes ago). Then copy all the files over to the other machine and run
configure and make.
Post by Jeffrey Walton
Post by Tim Rühsen
Maybe it's an bash/sh incompatibility. Anyways - what does 'make
install' do !? It basically copies the 'wget' executable into a
directory (e.g. /usr/local/bin/) that is listed in your PATH env variable.
You can do that by hand. If you want the updated man file, copy wget.1
into your man1 directory (e.g. /usr/local/share/man/man1/).
thanks.
It appears things are not getting as far as an install. My bad.
$ make
make all-recursive
Making all in lib
make all-recursive
Making all in src
make all-am
Making all in doc
Making all in po
Making all in util
Making all in fuzz
cd .. && /bin/sh
/export/home/jwalton/Build-Scripts/wget-1.19.5/build-aux/missing
automake-1.15 --gnu fuzz/Makefile
automake-1.15: not found [No such file or directory]
WARNING: 'automake-1.15' is missing on your system.
You should only need it if you modified 'Makefile.am' or
'configure.ac' or m4 files included by 'configure.ac'.
<http://www.gnu.org/software/automake>
<http://www.gnu.org/software/autoconf>
<http://www.gnu.org/software/m4/>
<http://www.perl.org/>
*** Error code 127
--
Thanking You,
Darshit Shah
PGP Fingerprint: 7845 120B 07CB D8D6 ECE5 FF2B 2A17 43ED A91A 35B6
Jeffrey Walton
2018-07-18 13:05:52 UTC
Permalink
Post by Darshit Shah
Are you trying to compile Wget from git? Or are you using the tarballs?
Tarball.
Post by Darshit Shah
If you are using the tarballs, this should not happen unless you have modified
some of the build files. In which case, I would ask you to share your changes
with us so that we can fix the build for everyone.
Tim identified the issue several months ago. I think Tim already fixed
it in Master. The 1.19.5 tarball still needs manual patching.

Jeff
Jeffrey Walton
2018-07-18 12:58:54 UTC
Permalink
Post by Tim Rühsen
Maybe it's an bash/sh incompatibility. Anyways - what does 'make
install' do !? It basically copies the 'wget' executable into a
directory (e.g. /usr/local/bin/) that is listed in your PATH env variable.
You can do that by hand. If you want the updated man file, copy wget.1
into your man1 directory (e.g. /usr/local/share/man/man1/).
I see what was happening. After unpacking this patch was applied:

sed -e 's|$(LTLIBICONV)|$(LIBICONV)|g' fuzz/Makefile.am >
fuzz/Makefile.am.fixed
mv fuzz/Makefile.am.fixed fuzz/Makefile.am

But it lacked this:

touch -t 197001010000 fuzz/Makefile.am

So Autotools was trying to regenerate all of its shit. Autotools sucks
so bad I cringe when I have to work with it. What a miserable set of
programs.

Thanks for the help.

Jeff
Tim Rühsen
2018-07-18 18:27:33 UTC
Permalink
Post by Jeffrey Walton
Post by Tim Rühsen
Maybe it's an bash/sh incompatibility. Anyways - what does 'make
install' do !? It basically copies the 'wget' executable into a
directory (e.g. /usr/local/bin/) that is listed in your PATH env variable.
You can do that by hand. If you want the updated man file, copy wget.1
into your man1 directory (e.g. /usr/local/share/man/man1/).
sed -e 's|$(LTLIBICONV)|$(LIBICONV)|g' fuzz/Makefile.am >
fuzz/Makefile.am.fixed
mv fuzz/Makefile.am.fixed fuzz/Makefile.am
touch -t 197001010000 fuzz/Makefile.am
So Autotools was trying to regenerate all of its shit. Autotools sucks
so bad I cringe when I have to work with it. What a miserable set of
programs.
This really isn't a fault of autotools :-)
You simply didn't have the things installed that you needed for amending
Makefile.am and rebuilding.

So what Darshit says would be an option: build a tarball from the latest
source (or with your changes) on *any* development machine, copy the
tarball over to the destination machine and simply './configure && make
&& sudo make install'. No autotools needed !

Another option would be that we make up a new release 1.19.6.

And another one: Don't touch Makefile.am - instead amend Makefile.

Regards, Tim

Loading...