Subject: bug#12672: Wrong path to funclib.sh

From: Peter Rosin <[email-masked]>
Date: Thu, 18 Oct 2012 19:58:17 +0200

[re-adding the bug, I hope that's ok]

On 2012-10-18 19:18, Earnie Boyd wrote:
> On Thu, Oct 18, 2012 at 11:16 AM, Peter Rosin <[email-masked]> wrote:
>>
>> So far so good, but if I then switch to MSYS/MinGW, which does not
>> have the same file system layout, I get:
>>
>> $ cd /c/Cygwin/home/peda/libtool/git/cygwin/libtool-2.4.2.296-cfcb-dirty
>> $ mkdir mgw
>> $ cd mgw
>> $ ../configure
>> ...
>> $ make
>>   GEN    libtoolize
>>   GEN    libltdl/argz.h
>> make  all-recursive
>> make[1]: Entering directory `/c/Cygwin/home/peda/libtool/git/cygwin/libtool-2.4.2.296-cfcb-dirty/mgw'
>> Making all in .
>> make[2]: Entering directory `/c/Cygwin/home/peda/libtool/git/cygwin/libtool-2.4.2.296-cfcb-dirty/mgw'
>>   CC     libltdl/loaders/libltdl_libltdl_la-preopen.lo
>> ./libtool: line 525: /home/peda/libtool/git/libtool-msvc/build-aux/funclib.sh: No such file or directory
> 
> I'm not getting this from a fresh pull, bootstrap, configure process.

But I didn't try a fresh pull, bootstrap, configure process, and I don't
expect that to fail. I tried to move a tarball to another system and
use it there (in lose terms).

>> make[2]: *** [libltdl/loaders/libltdl_libltdl_la-preopen.lo] Error 1
>> make[2]: Leaving directory `/c/Cygwin/home/peda/libtool/git/cygwin/libtool-2.4.2.296-cfcb-dirty/mgw'
>> make[1]: *** [all-recursive] Error 1
>> make[1]: Leaving directory `/c/Cygwin/home/peda/libtool/git/cygwin/libtool-2.4.2.296-cfcb-dirty/mgw'
>> make: *** [all] Error 2
>> $
>>
>>
>> /home/peda/libtool/git/libtool-msvc/build-aux/funclib.sh
>> isn't what you should use from MSYS, that file is called
>> /c/Cygwin/home/peda/libtool/git/libtool-msvc/build-aux/funclib.sh
>> from that side of the fence.
>>
> 
> It wasn't funclib.sh that complained but your libtool script.

I never said so, I said that the path pointing out funclib.sh
was wrong, not that the funclib.sh script as such was wrong.

>> I have also checked to just build a pristine tarball from
>> the MSYS side, without building on Cygwin first, same problem.
>> It appears that the path to funclib.sh is fixed during
>> bootstrap which of course is totally b0rked.
> 
> WJFFM.  I will say that I was completely outside of the source
> directory for both builds.

You probably still had access to the original directory where
the bootstrap happened.

Try this instead if you don't want to move a tarball to another
system:

$ cd /tmp
$ git clone git://git.savannah.gnu.org/libtool.git
$ cd libtool
$ ./bootstrap -fc

bootstrap fails, why? Is that also a regression?
I had to fix the tail of gl/README-release.diff,
with this diff (which is why the checkout is dirty):

diff --git a/gl/top/README-release.diff b/gl/top/README-release.diff
index 19cc3ec..49e2a7e 100644
--- a/gl/top/README-release.diff
+++ b/gl/top/README-release.diff
@@ -33,6 +33,6 @@
 
 +  If there are any problems, fix them and start again.
 +
- * To (i) set the date, version number, and release type [stable/alpha/beta]
-   on line 3 of NEWS, (ii) commit that, and (iii) tag the release, run
+ * To (i) set the date, version number, and release TYPE on line 3 of
+   NEWS, (ii) commit that, and (iii) tag the release, run

Now retry the bootstrap:

$ ./bootstrap -fc
$ ./configure
$ make
$ make dist
$ cp libtool-2.4.2.296-cfcb-dirty.tar.gz ..
$ cd ..
$ rm -rf libtool
$ tar xf libtool-2.4.2.296-cfcb-dirty.tar.gz
$ cd libtool-2.4.2.296-cfcb-dirty
$ ./configure
$ make
  GEN      libtoolize
make  all-recursive
make[1]: Entering directory `/tmp/libtool-2.4.2.296-cfcb-dirty'
Making all in .
make[2]: Entering directory `/tmp/libtool-2.4.2.296-cfcb-dirty'
  CC       libltdl/loaders/libltdl_libltdl_la-preopen.lo
./libtool: line 525: /tmp/libtool/build-aux/funclib.sh: No such file or directory
Makefile:1163: recipe for target `libltdl/loaders/libltdl_libltdl_la-preopen.lo' failed
make[2]: *** [libltdl/loaders/libltdl_libltdl_la-preopen.lo] Error 1
make[2]: Leaving directory `/tmp/libtool-2.4.2.296-cfcb-dirty'
Makefile:1511: recipe for target `all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/tmp/libtool-2.4.2.296-cfcb-dirty'
Makefile:905: recipe for target `all' failed
make: *** [all] Error 2

Some further info, "git grep auxscriptsdir" in the git checkout
returns this:
$ git grep auxscriptsdir
Makefile.am:              -e '/^\. /s|@auxscriptsdir\@|'$(abs_aux_dir)'|g' \
build-aux/ltmain.in:. "@auxscriptsdir@/funclib.sh"
build-aux/ltmain.in:. "@auxscriptsdir@/options-parser"
libtoolize.in:. "@auxscriptsdir@/funclib.sh"
libtoolize.in:. "@auxscriptsdir@/options-parser"
libtoolize.in:. "@auxscriptsdir@/extract-trace"

which makes libtool and libtoolize suspect.

However, only the libtool script seems affected, this is from the
configured tarball tree on MSYS (the [^n] part is there to exclude
paths starting with /c/Cygwin/home/...):

$ grep -r [^n]/home/peda *
build-aux/ltmain.sh:. "/home/peda/libtool/git/libtool-msvc/build-aux/funclib.sh"
build-aux/ltmain.sh:. "/home/peda/libtool/git/libtool-msvc/build-aux/options-parser"
libtool:. "/home/peda/libtool/git/libtool-msvc/build-aux/funclib.sh"
libtool:. "/home/peda/libtool/git/libtool-msvc/build-aux/options-parser"

Cheers,
Peter