Re: I broke cygport
Thanks for your feedback. Yaakov S (Cygwin Ports) wrote: cygconf is intended only for autoconf-based configure scripts. I'm not familiar with XEmacs, but I do know that autoconf-based configures will just ignore unknown arguments, so I will guess that XEmacs' configure is not autoconf-based. Well XEmacs 21.4 is based on autoconf 2.13 and 21.5 is based on autoconf 2.59. Neither configure script ignores unknown arguments: $ ../cvsroot/xemacs-21.4/configure --datarootdir=/foo ../cvsroot/xemacs-21.4/configure: Usage error: Unrecognized option: --datarootdir=/foo Use `../cvsroot/xemacs-21.4/configure --help' to show usage. $ ../cvsroot/xemacs-21.5/configure --datarootdir=/foo configure: error: unrecognized option: --datarootdir=/foo Try `../cvsroot/xemacs-21.5/configure --help' for more information. Non-autoconf-based configure scripts should do something like: lndirs cd ${B} ./configure || error "configure failed" cygmake Fair enough. For the record, attached is a patch against CVS head. This patch allows overriding the individual components of the default configure arguments in the cygconf() function. In addition, I fixed some minor typos in README unrelated to the cygconf() change; you may find those useful in their own right. BTW, your ChangeLog format is different from what I'm used to; I'm used to including an identifier of who made the change. See http://www.gnu.org/prep/standards/html_node/Change-Logs.html for details. Thanks again for cygport. Regards, Vin Shelton -- The Journey by Mary Oliver http://www.poemhunter.com/p/m/poem.asp?poet=6771&poem=30506 cygport2.diffs Description: Binary data
Re: I broke cygport
Yaakov S (Cygwin Ports) wrote: I just checked in a fix for this; please test. Yep. That fixed it. -- Chuck
Re: I broke cygport
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Vin Shelton wrote: > Have you had a chance to look at my patch which allows over-riding the > individual configure arguments in cygconf()? The patch is a > definitely a brute force approach, but something like it is necessary > to support XEmacs (or other packages that don't fully comply with > autoconf conventions). cygconf is intended only for autoconf-based configure scripts. I'm not familiar with XEmacs, but I do know that autoconf-based configures will just ignore unknown arguments, so I will guess that XEmacs' configure is not autoconf-based. Non-autoconf-based configure scripts should do something like: lndirs cd ${B} ./configure || error "configure failed" cygmake Note that this is consistent with Portage; the current xemacs ebuild[1] does not use econf either. [1] http://sources.gentoo.org/viewcvs.py/*checkout*/gentoo-x86/app-editors/xemacs/xemacs-21.4.19.ebuild > I will update the patch to the latest version of cygport if you want. In general, all patches for cygport should be made against CVS HEAD, but I don't think this needs a patch. Yaakov -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.2.1 (Cygwin) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFFNbKVpiWmPGlmQSMRAtVVAKCb6iENVw1jvzKCVi/OTKAYvJK24ACbBKf3 mKabIE3D0eCb44O9KhBAuo0= =QAXo -END PGP SIGNATURE-
Re: I broke cygport
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Charles Wilson wrote: > Here's the problem: libtool (pre-version 2.0) ships with a subproject -- > separately configured -- called libltdl. However, the subproject does > NOT include the GNU "required" files like README, AUTHORS, etc. Those > are all up at the top level. Yet, cygautoreconf complains about it: > Compiling libtool1.5-1.5.23a-1 > touch: cannot touch `[libltdl]/AUTHORS': No such file or directory > touch: cannot touch `[libltdl]/COPYING': No such file or directory > touch: cannot touch `[libltdl]/ChangeLog': No such file or directory > touch: cannot touch `[libltdl]/INSTALL': No such file or directory > touch: cannot touch `[libltdl]/NEWS': No such file or directory > touch: cannot touch `[libltdl]/README': No such file or directory CVS cygport touches the standard files not only in the top directory, but in AC_CONFIG_SUBDIRS as well, to prevent automake errors when those files are missing. The problem is that my parsing didn't support m4 square-bracket quoting. I just checked in a fix for this; please test. Yaakov -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.2.1 (Cygwin) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFFNa5lpiWmPGlmQSMRAu72AKDrPKGkUGcIoiWE2mcXiM0NyF+bbgCghtyH 1mb5aFsGQ2P+Y55wnJAGLrs= =ochm -END PGP SIGNATURE-
Re: I broke cygport
Yaakov S (Cygwin Ports) wrote: -BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Charles Wilson wrote: For most purposes, this is transparent. You run "autoconf" which is the wrapper, and you get "the right" version. However, cygport explicitly tests for the presence of "autoconf-2.5x" in $PATH. This patch makes cygport's search a little smarter -- and it or something like it is *required* if you want cygport to work after the new autoconf is installed. I just checked in autoconf-2.60 support to cygport CVS. Please test. Well, it seems to work for bootstrapping cygport itself. However, it fails with libtool (but not for any reason having to do with autoconf-2.60. It's some other change introduced post-cygport-0.2.4 release). [[[ Side note: the new libtool cygport doesn't actually use cygautoreconf. libtool-from-CVS must be bootstrapped using its own bootstrap script; a regular autoreconf doesn't populate the test projects properly. However, if you DO use autoreconf instead of the bootstrap script, you can still build libtool and libltdl -- it's just that you can't then run the testsuite. SO, after fixing the issue with cygautoreconf and autoconf-2.60 -- I could at least use it with libtool (as long as I didn't want to run the testsuite). But with the cygport-from-CVS version, I can't do that. ]]] Here's the problem: libtool (pre-version 2.0) ships with a subproject -- separately configured -- called libltdl. However, the subproject does NOT include the GNU "required" files like README, AUTHORS, etc. Those are all up at the top level. Yet, cygautoreconf complains about it: >>> Compiling libtool1.5-1.5.23a-1 touch: cannot touch `[libltdl]/AUTHORS': No such file or directory touch: cannot touch `[libltdl]/COPYING': No such file or directory touch: cannot touch `[libltdl]/ChangeLog': No such file or directory touch: cannot touch `[libltdl]/INSTALL': No such file or directory touch: cannot touch `[libltdl]/NEWS': No such file or directory touch: cannot touch `[libltdl]/README': No such file or directory (That's with src_compile containing the following two lines (among others) #./bootstrap cygautoreconf Note that this not a showstopper for libtool -- I actually use ./bootstrap "in production" But I could see cases where even if the top-level project is fully GNU- (or gnits-) compliant, tightly-coupled subprojects may not be. OTOH, you might want the current behavior for loosely-coupled groupings of subprojects... Bottom Line: the autoconf-2.60 handling in cygport-from-CVS seems to work fine. I discovered a use case for which cygport-from-CVS fails -- but this failure is unrelated to the autoconf-2.60 stuff. -- Chuck
Re: I broke cygport
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Charles Wilson wrote: > For most purposes, this is transparent. You run "autoconf" which is the > wrapper, and you get "the right" version. However, cygport explicitly > tests for the presence of "autoconf-2.5x" in $PATH. > > This patch makes cygport's search a little smarter -- and it or > something like it is *required* if you want cygport to work after the > new autoconf is installed. I just checked in autoconf-2.60 support to cygport CVS. Please test. Yaakov -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.2.1 (Cygwin) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFFNG2dpiWmPGlmQSMRAuknAKC2zz7YDX9Rk4wVvDwWq4wckVDq9ACdHSce ykZGSQxm8l4Xl0RRjYV7+oQ= =X0N+ -END PGP SIGNATURE-
I broke cygport
I'm currently working on a bunch of release announcements for update packages...but first things first: One of those updates is autoconf2.5-2.59 --> autoconf2.5-2.60 (yes, it's weird. But the received wisdom is that autoconf-2.60 is considered a continuation of the 2.5x line of development.) Anyway, the old autoconf2.5 package contained files like: /usr/bin/autoconf-2.5x /usr/bin/autoheader-2.5x etc However, that's not the way the linuxii do it. AND, since (in another change) I switched the autoconf wrapper from the Red Hat perl script to the gentoo bash script -- I felt it better to move closer to the linux way. Therefore, the new autoconf2.5 package contains /usr/bin/autoconf-2.60 /usr/bin/autoheader-2.60 etc For most purposes, this is transparent. You run "autoconf" which is the wrapper, and you get "the right" version. However, cygport explicitly tests for the presence of "autoconf-2.5x" in $PATH. This patch makes cygport's search a little smarter -- and it or something like it is *required* if you want cygport to work after the new autoconf is installed. -- Chuck --- cygport.orig2006-10-16 22:16:59.953125000 -0400 +++ cygport 2006-10-16 22:13:52.078125000 -0400 @@ -216,13 +216,46 @@ } # check for mandatory program, else error +# Two forms: +# (1) check_prog_req progran_name package +# search for program_name in path. error if not found +# +# (2) check_prog_req progran_name package [alt_prog1 [alt_prog2 [ ...]]] +# search in order for progran_name, alt_prog1, alt_prog2, ... +# in path. If none found, error. Otherwise, echo name of +# program found. Only call this variant inside shell escape +# (backticks or $()) check_prog_req() { local prog=${1}; - local pkg=${2:-${1}}; + shift + local pkg=${1:-${prog}}; + shift if ! check_prog ${prog} then - error "${pkg} is required to build this package"; + local found; + found="no" + while [ $(( $# > 0 )) ] + do + prog=${1} + if check_prog ${prog} + then + found="yes" + break + fi + shift + done + if [ "x${found}" != "xyes" ] + then + error "${pkg} is required to build this package"; + else + echo "${prog}" + fi + else + if [ $(( $# > 0 )) ] + then + echo "${prog}" + fi fi return 0; @@ -604,7 +637,10 @@ export WANT_AUTOMAKE; /usr/bin/autoreconf-2.13 --force -i --verbose || error "autoreconf-2.13 failed" else - check_prog_req autoconf-2.5x autoconf2.5 + local found_autoconf_prog; + local found_autoconf_ver; + found_autoconf_prog=$( check_prog_req autoconf-2.5x autoconf2.5 autoconf-2.60 ) + found_autoconf_ver=${found_autoconf_prog##autoconf-} export WANT_AUTOCONF=2.5; export WANT_AUTOMAKE; @@ -618,7 +654,8 @@ fi done - /usr/bin/autoreconf-2.5x --install --force --verbose || error "autoreconf-2.5x failed" + /usr/bin/autoreconf-${found_autoconf_ver} --install --force --verbose || \ + error "autoreconf-${found_autoconf_ver} failed" fi if [ -f config.h.in ]