Re: I broke cygport

2006-10-18 Thread Charles Wilson

Yaakov S (Cygwin Ports) wrote:


I just checked in a fix for this; please test.


Yep. That fixed it.

--
Chuck


Re: I broke cygport

2006-10-18 Thread Vin Shelton

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 args || 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=6771poem=30506


cygport2.diffs
Description: Binary data


Re: I broke cygport

2006-10-17 Thread Charles Wilson

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

2006-10-17 Thread Yaakov S (Cygwin Ports)
-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

2006-10-17 Thread Yaakov S (Cygwin Ports)
-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 args || 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-


I broke cygport

2006-10-16 Thread Charles Wilson
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 ]


Re: I broke cygport

2006-10-16 Thread Yaakov S (Cygwin Ports)
-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-