From: Stefano S. <ste...@po...> - 2010-06-21 16:13:13
|
Hi all, I'm trying to compile mingw-get CVS, compilation seems currently broken here, I got errors of the kind: $ make make: *** No rule to make target `clistub.o', needed by `mingw-get.exe'. Stop. Prefixing the object files in the Makefile with "src" (as they are installed there) does the trick, please fix it. (BTW where should I report such issues?) Regards. |
From: Keith M. <kei...@us...> - 2010-06-21 21:00:10
|
On Monday 21 June 2010 17:12:28 Stefano Sabatini wrote: > I'm trying to compile mingw-get CVS, compilation seems currently > broken here, I got errors of the kind: > > $ make > make: *** No rule to make target `clistub.o', needed by > `mingw-get.exe'. Stop. > > Prefixing the object files in the Makefile with "src" (as they are > installed there) does the trick, please fix it. There's nothing to fix. It isn't broken; (at least, it works perfectly for me): $ cd ~/tmp $ cvs -z3 -d :ext:me...@mi...:/cvsroot/mingw co mingw-get ... $ cd mingw-get $ autoconf $ mkdir build $ cd build $ ../configure --host=mingw32 --build=linux ... configure: creating ./config.status config.status: creating version.c config.status: creating Makefile $ make ...[ no errors reported ]... $ echo $? 0 $ ls *.exe *.dll mingw-get-0.dll mingw-get.exe pkginfo.exe $ make prefix=`pwd`/staged install ... $ ls -R staged staged: bin libexec var staged/bin: mingw-get.exe pkginfo.exe staged/libexec: mingw-get staged/libexec/mingw-get: mingw-get-0.dll staged/var: lib staged/var/lib: mingw-get staged/var/lib/mingw-get: data staged/var/lib/mingw-get/data: defaults.xml Exactly as is should be. How have you configured it? What make are you using? The sources are located by a VPATH reference: VPATH = ${srcdir}/src ${srcdir}/src/pkginfo ${srcdir}/tinyxml with ${srcdir} established by configure; that is correct, and should *always* suffice to locate the sources; *you* must be doing something wrong. > (BTW where should I report such issues?) If it were an issue, the bug tracker would be appropriate, but in cases of uncertainty, it is wise to seek advice here first. -- Regards, Keith. |
From: Keith M. <kei...@us...> - 2010-06-21 21:19:31
|
On Monday 21 June 2010 17:12:28 Stefano Sabatini wrote: > I'm trying to compile mingw-get CVS, compilation seems currently > broken here, I got errors of the kind: > > $ make > make: *** No rule to make target `clistub.o', needed by > `mingw-get.exe'. Stop. > > Prefixing the object files in the Makefile with "src" (as they are > installed there) does the trick, please fix it. A further thought: what do you mean, the *object* files are installed in src? They *should* be *created* in your build directory, (which is the *current* directory where the Makefile is generated, and where you run make); they are never *installed* anywhere. -- Regards, Keith. |
From: Stefano S. <ste...@po...> - 2010-06-22 14:04:49
|
On date Monday 2010-06-21 22:19:16 +0100, Keith Marshall wrote: > On Monday 21 June 2010 17:12:28 Stefano Sabatini wrote: > > I'm trying to compile mingw-get CVS, compilation seems currently > > broken here, I got errors of the kind: > > > > $ make > > make: *** No rule to make target `clistub.o', needed by > > `mingw-get.exe'. Stop. > > > > Prefixing the object files in the Makefile with "src" (as they are > > installed there) does the trick, please fix it. > > A further thought: what do you mean, the *object* files are installed > in src? They *should* be *created* in your build directory, (which is > the *current* directory where the Makefile is generated, and where you > run make); they are never *installed* anywhere. What I mean is that when they are created in src, but make is looking for them in the current dir. Follows the failing session: ssabatini@ssabatini ~/src $ cvs -z3 -d :pserver:ano...@mi...:/cvsroot/mingw co mingw-get cvs.exe checkout: warning: failed to open C:/MinGW-home/ssabatini\.cvspass for r eading: No such file or directory cvs checkout: Updating mingw-get U mingw-get/.cvsignore U mingw-get/COPYING U mingw-get/ChangeLog U mingw-get/Makefile.in U mingw-get/README U mingw-get/aclocal.m4 U mingw-get/configure.ac U mingw-get/version.c.in cvs checkout: Updating mingw-get/7z U mingw-get/7z/7zCrc.c U mingw-get/7z/7zCrc.h U mingw-get/7z/Alloc.c U mingw-get/7z/Alloc.h U mingw-get/7z/LGPL.txt U mingw-get/7z/MODIFIED_LZMA.txt U mingw-get/7z/Types.h cvs checkout: Updating mingw-get/7z/Archive cvs checkout: Updating mingw-get/7z/Archive/7z U mingw-get/7z/Archive/7z/7zAlloc.c U mingw-get/7z/Archive/7z/7zAlloc.h U mingw-get/7z/Archive/7z/7zBuffer.c U mingw-get/7z/Archive/7z/7zBuffer.h U mingw-get/7z/Archive/7z/7zDecode.c U mingw-get/7z/Archive/7z/7zDecode.h U mingw-get/7z/Archive/7z/7zExtract.c U mingw-get/7z/Archive/7z/7zExtract.h U mingw-get/7z/Archive/7z/7zHeader.c U mingw-get/7z/Archive/7z/7zHeader.h U mingw-get/7z/Archive/7z/7zIn.c U mingw-get/7z/Archive/7z/7zIn.h U mingw-get/7z/Archive/7z/7zItem.c U mingw-get/7z/Archive/7z/7zItem.h U mingw-get/7z/Archive/7z/7zMethodID.h cvs checkout: Updating mingw-get/7z/Compress cvs checkout: Updating mingw-get/7z/Compress/Branch U mingw-get/7z/Compress/Branch/BranchTypes.h U mingw-get/7z/Compress/Branch/BranchX86.c U mingw-get/7z/Compress/Branch/BranchX86.h U mingw-get/7z/Compress/Branch/BranchX86_2.c U mingw-get/7z/Compress/Branch/BranchX86_2.h cvs checkout: Updating mingw-get/7z/Compress/Huffman U mingw-get/7z/Compress/Huffman/HuffmanEncode.h cvs checkout: Updating mingw-get/7z/Compress/Lz U mingw-get/7z/Compress/Lz/LzHash.h U mingw-get/7z/Compress/Lz/MatchFinder.h U mingw-get/7z/Compress/Lz/MatchFinderMt.h cvs checkout: Updating mingw-get/7z/Compress/Lzma U mingw-get/7z/Compress/Lzma/LzmaDecode.c U mingw-get/7z/Compress/Lzma/LzmaDecode.h U mingw-get/7z/Compress/Lzma/LzmaStateDecode.h U mingw-get/7z/Compress/Lzma/LzmaTypes.h cvs checkout: Updating mingw-get/boost U mingw-get/boost/LICENSE_1_0.txt U mingw-get/boost/MODIFIED_BOOST.txt U mingw-get/boost/assert.hpp U mingw-get/boost/checked_delete.hpp U mingw-get/boost/config.hpp U mingw-get/boost/shared_ptr.hpp U mingw-get/boost/throw_exception.hpp cvs checkout: Updating mingw-get/boost/config U mingw-get/boost/config/select_compiler_config.hpp U mingw-get/boost/config/select_platform_config.hpp U mingw-get/boost/config/select_stdlib_config.hpp U mingw-get/boost/config/suffix.hpp U mingw-get/boost/config/user.hpp cvs checkout: Updating mingw-get/boost/config/compiler U mingw-get/boost/config/compiler/gcc.hpp cvs checkout: Updating mingw-get/boost/config/no_tr1 U mingw-get/boost/config/no_tr1/utility.hpp cvs checkout: Updating mingw-get/boost/config/platform U mingw-get/boost/config/platform/win32.hpp cvs checkout: Updating mingw-get/boost/config/stdlib U mingw-get/boost/config/stdlib/libstdcpp3.hpp cvs checkout: Updating mingw-get/boost/detail U mingw-get/boost/detail/bad_weak_ptr.hpp U mingw-get/boost/detail/shared_count.hpp U mingw-get/boost/detail/sp_counted_base.hpp U mingw-get/boost/detail/sp_counted_base_gcc_x86.hpp U mingw-get/boost/detail/sp_counted_impl.hpp U mingw-get/boost/detail/sp_typeinfo.hpp U mingw-get/boost/detail/workaround.hpp cvs checkout: Updating mingw-get/bzip2 cvs checkout: Updating mingw-get/src U mingw-get/src/climain.cpp U mingw-get/src/clistub.c U mingw-get/src/dmh.cpp U mingw-get/src/dmh.h U mingw-get/src/keyword.c U mingw-get/src/mkpath.c U mingw-get/src/mkpath.h U mingw-get/src/pkgbase.h U mingw-get/src/pkgbind.cpp U mingw-get/src/pkgdeps.cpp U mingw-get/src/pkgexec.cpp U mingw-get/src/pkgfind.cpp U mingw-get/src/pkghash.c U mingw-get/src/pkginet.cpp U mingw-get/src/pkginst.cpp U mingw-get/src/pkgkeys.c U mingw-get/src/pkgkeys.h U mingw-get/src/pkgname.cpp U mingw-get/src/pkgproc.h U mingw-get/src/pkgreqs.cpp U mingw-get/src/pkgspec.cpp U mingw-get/src/pkgstrm.cpp U mingw-get/src/pkgstrm.h U mingw-get/src/pkgtask.h U mingw-get/src/sysroot.cpp U mingw-get/src/tarproc.cpp U mingw-get/src/vercmp.cpp U mingw-get/src/vercmp.h U mingw-get/src/xmlfile.c cvs checkout: Updating mingw-get/src/pkginfo U mingw-get/src/pkginfo/driver.c U mingw-get/src/pkginfo/pkginfo.h U mingw-get/src/pkginfo/pkginfo.l cvs checkout: Updating mingw-get/tinyxml U mingw-get/tinyxml/MODIFIED_TINYXML.txt U mingw-get/tinyxml/tinystr.cpp U mingw-get/tinyxml/tinystr.h U mingw-get/tinyxml/tinyxml.cpp U mingw-get/tinyxml/tinyxml.h U mingw-get/tinyxml/tinyxmlerror.cpp U mingw-get/tinyxml/tinyxmlparser.cpp cvs checkout: Updating mingw-get/xml U mingw-get/xml/profile.xml cvs checkout: Updating mingw-get/zlib cvs checkout: Updating mingw-get/zlib/contrib cvs checkout: Updating mingw-get/zlib/contrib/minizip U build-aux/config.guess U build-aux/config.sub U build-aux/install-sh U m4/missing.m4 cvs.exe checkout: dying gasps from mingw.cvs.sf.net unexpected ssabatini@ssabatini ~/src $ cd mingw-get ssabatini@ssabatini ~/src/mingw-get $ autoconf ssabatini@ssabatini ~/src/mingw-get $ configure checking build system type... i686-pc-mingw32 checking host system type... i686-pc-mingw32 checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.exe checking for suffix of executables... .exe checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking for g++... g++ checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking for flex... flex checking lex output file root... lex.yy checking lex library... none needed checking whether yytext is a pointer... no checking how to run the C preprocessor... gcc -E checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking zlib.h usability... yes checking zlib.h presence... yes checking for zlib.h... yes checking bzlib.h usability... yes checking bzlib.h presence... yes checking for bzlib.h... yes checking lzma.h usability... yes checking lzma.h presence... yes checking for lzma.h... yes checking for ar... ar checking for a thread-safe mkdir -p... /bin/mkdir -p checking for a BSD-compatible install... /bin/install -c checking whether ln -s works... no, using cp -p checking for strip... strip configure: creating ./config.status config.status: creating version.c config.status: creating Makefile ssabatini@ssabatini ~/src/mingw-get $ make gcc -MM -MP -MD -D DEBUGLEVEL=0 -I ./src -I ./src/pkginfo -I ./tinyxml -g -O2 ./ src/pkginfo/driver.c gcc -c -D DEBUGLEVEL=0 -I ./src -I ./src/pkginfo -I ./tinyxml -g -O2 -o driver.o ./src/pkginfo/driver.c flex -t ./src/pkginfo/pkginfo.l > pkginfo.c gcc -MM -MP -MD -D DEBUGLEVEL=0 -I ./src -I ./src/pkginfo -I ./tinyxml -g -O2 pk ginfo.c gcc -c -D DEBUGLEVEL=0 -I ./src -I ./src/pkginfo -I ./tinyxml -g -O2 -o pkginfo. o pkginfo.c gcc -o pkginfo.exe -g -O2 driver.o pkginfo.o make: *** No rule to make target `clistub.o', needed by `mingw-get.exe'. Stop. ... Regards. |
From: Keith M. <kei...@us...> - 2010-06-22 19:06:35
|
On Tuesday 22 June 2010 15:04:01 Stefano Sabatini wrote: > On date Monday 2010-06-21 22:19:16 +0100, Keith Marshall wrote: > > On Monday 21 June 2010 17:12:28 Stefano Sabatini wrote: > > > I'm trying to compile mingw-get CVS, compilation seems > > > currently broken here, I got errors of the kind: > > > > > > $ make > > > make: *** No rule to make target `clistub.o', needed by > > > `mingw-get.exe'. Stop. > > > > > > Prefixing the object files in the Makefile with "src" (as they > > > are installed there) does the trick, please fix it. > > > > A further thought: what do you mean, the *object* files are > > installed in src? They *should* be *created* in your build > > directory, (which is the *current* directory where the Makefile > > is generated, and where you run make); they are never *installed* > > anywhere. > > What I mean is that when they are created in src, but make is > looking for them in the current dir. Well, current directory is exactly where they are supposed to be created. > Follows the failing session: > > ssabatini@ssabatini ~/src > $ cvs -z3 -d :pserver:ano...@mi...:/cvsroot/mingw co > mingw-get cvs.exe checkout: warning: failed to open > C:/MinGW-home/ssabatini\.cvspass for r eading: No such file or > directory Here, you aren't using pserver authentication correctly... > cvs checkout: Updating mingw-get > ... > cvs.exe checkout: dying gasps from mingw.cvs.sf.net unexpected ...which likely explains this abnormal completion. > ssabatini@ssabatini ~/src > $ cd mingw-get > > ssabatini@ssabatini ~/src/mingw-get > $ autoconf Okay; so far, so good. > ssabatini@ssabatini ~/src/mingw-get > $ configure Here, you are configuring for an "in-source" build. That's a bad habit; you would be well advised to break it. > ssabatini@ssabatini ~/src/mingw-get > $ make > gcc -MM -MP -MD -D DEBUGLEVEL=0 -I ./src -I ./src/pkginfo -I > ./tinyxml -g -O2 ./ src/pkginfo/driver.c > gcc -c -D DEBUGLEVEL=0 -I ./src -I ./src/pkginfo -I ./tinyxml -g > -O2 -o driver.o ./src/pkginfo/driver.c > flex -t ./src/pkginfo/pkginfo.l > pkginfo.c > gcc -MM -MP -MD -D DEBUGLEVEL=0 -I ./src -I ./src/pkginfo -I > ./tinyxml -g -O2 pk ginfo.c > gcc -c -D DEBUGLEVEL=0 -I ./src -I ./src/pkginfo -I ./tinyxml -g > -O2 -o pkginfo. o pkginfo.c > gcc -o pkginfo.exe -g -O2 driver.o pkginfo.o Even with your bad choice of build location, this much is successful; however, if you hadn't chosen the "in-source" build, we would never have uncovered this problem... > make: *** No rule to make target `clistub.o', needed by > `mingw-get.exe'. Stop. ...which is actually the result of the autoconf configure script placing an invalid VPATH spec in the generated Makefile; trashing a perfectly valid template in Makefile.in; IMO, this certainly merits a report to bug...@gn... -- valid template: VPATH = @srcdir@/src @srcdir@/src/pkginfo @srcdir@/tinyxml is written to Makefile as: VPATH = /src ./src/pkginfo ./tinyxml when it should be: VPATH = ./src ./src/pkginfo ./tinyxml We can kludge around this, in this instance, by using @top_srcdir@ in place of @srcdir@ in the Makefile.in template for the VPATH record, but the autoconf defect really needs to be fixed. Alternatively, you can either fix the VPATH record in your generated Makefile, or adopt the more robust practice of building in a separate build directory. -- Regards, Keith. |
From: LRN <lr...@gm...> - 2010-06-22 20:10:35
|
On 22.06.2010 23:06, Keith Marshall wrote: > On Tuesday 22 June 2010 15:04:01 Stefano Sabatini wrote: > Here, you are configuring for an "in-source" build. That's a bad > habit; you would be well advised to break it. > > We can kludge around this, in this instance, by using @top_srcdir@ in > place of @srcdir@ in the Makefile.in template for the VPATH record, > but the autoconf defect really needs to be fixed. Alternatively, you > can either fix the VPATH record in your generated Makefile, or adopt > the more robust practice of building in a separate build directory. > Could you please explain this practice in more detail? For posterity :) I've been calling ./configure from top src dir for years (except for the cases when a project explicitly told me to cd into some build subdirectory) without problems...Was i just lucky? |
From: Ralf W. <Ral...@gm...> - 2010-06-22 20:02:00
|
Hi Keith, * Keith Marshall wrote on Tue, Jun 22, 2010 at 09:06:24PM CEST: > > make: *** No rule to make target `clistub.o', needed by > > `mingw-get.exe'. Stop. > > ...which is actually the result of the autoconf configure script > placing an invalid VPATH spec in the generated Makefile; trashing a > perfectly valid template in Makefile.in; IMO, this certainly merits a > report to bug...@gn... -- valid template: > > VPATH = @srcdir@/src @srcdir@/src/pkginfo @srcdir@/tinyxml > > is written to Makefile as: > > VPATH = /src ./src/pkginfo ./tinyxml > > when it should be: > > VPATH = ./src ./src/pkginfo ./tinyxml It should work if you separate VPATH entries by colon rather than space: VPATH = @srcdir@/src:@srcdir@/src/pkginfo:@srcdir@/tinyxml Some non-GNU make only accept colon-separated VPATH entries (and I guess there are old ones accepting only one entry), I guess the Autoconf manual should document this better. Thanks, Ralf |
From: Stefano S. <ste...@po...> - 2010-06-23 08:19:07
|
On date Tuesday 2010-06-22 22:01:52 +0200, Ralf Wildenhues wrote: > Hi Keith, > > * Keith Marshall wrote on Tue, Jun 22, 2010 at 09:06:24PM CEST: > > > make: *** No rule to make target `clistub.o', needed by > > > `mingw-get.exe'. Stop. > > > > ...which is actually the result of the autoconf configure script > > placing an invalid VPATH spec in the generated Makefile; trashing a > > perfectly valid template in Makefile.in; IMO, this certainly merits a > > report to bug...@gn... -- valid template: > > > > VPATH = @srcdir@/src @srcdir@/src/pkginfo @srcdir@/tinyxml > > > > is written to Makefile as: > > > > VPATH = /src ./src/pkginfo ./tinyxml > > > > when it should be: > > > > VPATH = ./src ./src/pkginfo ./tinyxml > > It should work if you separate VPATH entries by colon rather than space: > VPATH = @srcdir@/src:@srcdir@/src/pkginfo:@srcdir@/tinyxml $ autoconf --version autoconf (GNU Autoconf) 2.65 [...] I tried various Makefile.in combinations: VPATH = ${srcdir}/src:${srcdir}/src/pkginfo:${srcdir}/tinyxml => VPATH = /src:${srcdir}/src/pkginfo:${srcdir}/tinyxml VPATH = @srcdir@/src:@srcdir@/src/pkginfo:@srcdir@/tinyxml => VPATH = /src:./src/pkginfo:./tinyxml Anyway I fixed it manually and now it compiles fine. > Some non-GNU make only accept colon-separated VPATH entries (and I guess > there are old ones accepting only one entry), I guess the Autoconf > manual should document this better. Sorry but I came to the conclusion that auto* tools should be avoided, they add more problems (chiken&egg problem, added dependencies, auto* versions mismatches problems, added complexity, unreadability of the generated configure files, need to know/hack M4 for non-trivial changes, various quirks&bugs) than they try to fix. Im my experience I know it is possible to write nice full-fledged configure script *by hand* (e.g.: http://git.ffmpeg.org/?p=ffmpeg;a=blob;f=configure;hb=HEAD ) or alternatively, if a single heavy dependency is not a problem, use a proper language for the configuration (scons seems promising, but has its own load of quirks&bugs). Thanks, regards. |
From: Earnie <ea...@us...> - 2010-06-23 14:38:42
|
Stefano Sabatini wrote: > > Sorry but I came to the conclusion that auto* tools should be avoided, > they add more problems (chiken&egg problem, added dependencies, auto* > versions mismatches problems, added complexity, unreadability of the > generated configure files, need to know/hack M4 for non-trivial > changes, various quirks&bugs) than they try to fix. > I agree with this for automake and perhaps libtool but not for autoconf. > Im my experience I know it is possible to write nice full-fledged > configure script *by hand* (e.g.: > http://git.ffmpeg.org/?p=ffmpeg;a=blob;f=configure;hb=HEAD > ) > How do you solve the problem of various different compilers and systems not doing the same thing? Autoconf has the goal of making the compilations seamless for various different compilers and system environments. Not all systems have the same functions. > or alternatively, if a single heavy dependency is not a problem, use a > proper language for the configuration (scons seems promising, but has > its own load of quirks&bugs). > Others have tried to do what autoconf does but have not gotten the momentum for it to carry forth leaving autoconf the best tool to use. -- Earnie -- http://www.for-my-kids.com |
From: Ralf W. <Ral...@gm...> - 2010-06-23 17:09:12
|
* Stefano Sabatini wrote on Wed, Jun 23, 2010 at 10:18:20AM CEST: > On date Tuesday 2010-06-22 22:01:52 +0200, Ralf Wildenhues wrote: > > * Keith Marshall wrote on Tue, Jun 22, 2010 at 09:06:24PM CEST: > > > VPATH = @srcdir@/src @srcdir@/src/pkginfo @srcdir@/tinyxml > > It should work if you separate VPATH entries by colon rather than space: > > VPATH = @srcdir@/src:@srcdir@/src/pkginfo:@srcdir@/tinyxml > > $ autoconf --version > autoconf (GNU Autoconf) 2.65 > [...] > > I tried various Makefile.in combinations: > > VPATH = ${srcdir}/src:${srcdir}/src/pkginfo:${srcdir}/tinyxml > => > VPATH = /src:${srcdir}/src/pkginfo:${srcdir}/tinyxml Ah, ok, see the bug now. I will fix that in Autoconf. Thanks to you and Keith for the report. Cheers, Ralf |
From: Keith M. <kei...@us...> - 2010-06-23 17:56:42
|
On Tuesday 22 June 2010 21:01:52 Ralf Wildenhues wrote: > > ... actually the result of the autoconf configure script > > placing an invalid VPATH spec in the generated Makefile; trashing > > a perfectly valid template in Makefile.in; IMO, this certainly > > merits a report to bug...@gn... -- valid template: > > > > VPATH = @srcdir@/src @srcdir@/src/pkginfo @srcdir@/tinyxml > > > > is written to Makefile as: > > > > VPATH = /src ./src/pkginfo ./tinyxml > > > > when it should be: > > > > VPATH = ./src ./src/pkginfo ./tinyxml > > It should work if you separate VPATH entries by colon rather than > space: VPATH = @srcdir@/src:@srcdir@/src/pkginfo:@srcdir@/tinyxml Nope; it still discards the initial instance of @srcdir@, where it should be substituted: VPATH = /src:./src/pkginfo:./tinyxml instead of (correct): VPATH = ./src:./src/pkginfo:./tinyxml > Some non-GNU make only accept colon-separated VPATH entries (and I > guess there are old ones accepting only one entry), I guess the > Autoconf manual should document this better. Yes, it probably should; but even if it does, there would still seem to be a hitherto unnoticed bug, (present in 2.61 on my MSYS box, and in 2.63 on my Ubuntu box; perhaps also every other version currently in circulation). I'll file the report. -- Regards, Keith. |
From: Keith M. <kei...@us...> - 2010-06-24 20:08:47
|
On Wednesday 23 June 2010 09:18:20 Stefano Sabatini wrote: > Sorry but I came to the conclusion that auto* tools should be > avoided, they add more problems (chiken&egg problem, added > dependencies, auto* versions mismatches problems, added complexity, > unreadability of the generated configure files, need to know/hack > M4 for non-trivial changes, various quirks&bugs) than they try to > fix. You are entitled to your opinion, but in respect of autoconf, I strongly disagree; (I don't use any other member of the autotool family). I will continue to use autoconf to generate the configure scripts for projects I contribute to MinGW. You have tripped over one miniscule bug in autoconf. I have told you how to avoid it. Instead of just whining about it, I have also submitted a bug report to the autoconf project, and FYI, Ralf W. has *already* stepped in with a patch to fix it. > Im my experience I know it is possible to write nice full-fledged > configure script *by hand* (e.g.: > http://git.ffmpeg.org/?p=ffmpeg;a=blob;f=configure;hb=HEAD > ) This tells me that your experience is pretty limited. In my fairly extensive experience, I do not recall even one hand crafted configure script which has been fit for purpose; the *failure* rate is 100%. > or alternatively, if a single heavy dependency is not a problem, > use a proper language for the configuration (scons seems promising, > but has its own load of quirks&bugs). You are welcome to use any of these which you wish, but I simply will not consider any alternative which requires the end user to install anything beyond a Bourne shell, and the few basic tools which are provided in a standard MSYS install, (as defined by the payload of the old MSYS integrated installers). Autoconf is the tool of choice for this project; it is admirably fit for purpose, and I can see no compelling reason to seek alternatives. -- Regards, Keith. |
From: Volker G. <vo...@no...> - 2010-06-25 16:37:06
|
Keith Marshall <kei...@us...> schrieb: > On Wednesday 23 June 2010 09:18:20 Stefano Sabatini wrote: > > Sorry but I came to the conclusion that auto* tools should be > > avoided, [...] > > You are entitled to your opinion, but in respect of autoconf, I > strongly disagree; [...] > > > Im my experience I know it is possible to write nice full-fledged > > configure script *by hand* (e.g.: > > http://git.ffmpeg.org/?p=ffmpeg;a=blob;f=configure;hb=HEAD > > ) > > This tells me that your experience is pretty limited. In my fairly > extensive experience, I do not recall even one hand crafted configure > script which has been fit for purpose; the *failure* rate is 100%. I generally agree that there is no need to avoid Autoconf, but I also think that your statement of "100% failure" is too strong. There are indeed good, hand-written configure scripts out there, among which the one of Zlib might be the most popular. BTW, I've seen a lot of garbage in Autoconf-generated ./configure scripts, but those are usually the result _sidestepping_ Autoconf, i.e. when people put custom, half-baked shell code into their configure.ac. Another common mistake is using the wrong macro, e.g. using AC_CHECK_LIB() when PKG_CHECK_MODULES() would be more appropriate. Such misapplications contribute to the general opinion that Autoconf should be avoided. Nevertheless, Autoconf is far better than its reputation. Greets, Volker -- Volker Grabsch ---<<(())>>--- Administrator NotJustHosting GbR |
From: Keith M. <kei...@us...> - 2010-06-25 17:19:32
|
On Friday 25 June 2010 17:36:55 Volker Grabsch wrote: > I do not recall even one hand crafted configure > > > script which has been fit for purpose; the *failure* rate is > > 100%. > > I generally agree that there is no need to avoid Autoconf, but > I also think that your statement of "100% failure" is too strong. There was no intent to assert that there is no such thing as a well written, hand crafted configure script, (although it is doubtful that any can address the portability issues, to the extent achieved on the back of the accumulated wisdom within autoconf); I *can* assert, with 100% certainty, that I have yet to encounter one... > There are indeed good, hand-written configure scripts out there, > among which the one of Zlib might be the most popular. ...and indeed, while it may not have taken as much to fix as some, I count zlib amongst the failures. -- Regards, Keith. |