-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Igor Pechtchanski wrote:
| Thanks for the patch. Some of it intersects with my and others' fixes (I | planned to integrate patches in chronological order), but most of it is | original and sounds very useful. It's on my queue. I'll use this message | as a sort of a ChangeLog -- please let me know if you'd rather construct | your own ChangeLog entries.
OK, they say release and release often, right? :-) This patch is "take two" for me and should replace my previous patch.
My revised "ChangeLog" follows. Thanks!
Yaakov
* provides variables for multiple binary packages, meaning that only the 'pkg' section has to be modified when this is necessary
* adds function 'reconf', mainly for package makers using the script to drive the initial build process, when they realize that changes need to be made and want to get a clean configure again.
* 'install' first clears the instdir, useful when changes need to be made to install paths, etc.; this provides a clean install always
* automatic gzip-ing of man and info files (still experimental).
* adds to and alphabetizes the standard text doc list, making it easier (and less common) to add to this list as necessary for an individual package
* /etc/postinstall created only if there's a postinstall.sh
* slightly modified 'list' output, which indents two spaces and prints the leading slash, for use in the Cygwin README.
* adds function 'depend' which lists the package dependencies of the executable and libraries, indented two spaces for use in the Cygwin README.
* adds options to call existing functions: 'configure' calls 'conf', 'make' calls 'build', 'test' calls 'check'.
* adds option 'first' (never figured out what else to call it), which calls 'mkdirs' 'spkg' and 'finish'. I use it after patching the src tree to create the -src tarball, which afterwards I call 'all' to build the binary package in one step.
* some substitution of "&& \" instead of "; \", and other code cleanup.
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.3 (MingW32) Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org
iD8DBQFAKkMWpiWmPGlmQSMRAraFAJ933PvgVGQ1Q4W5Jni1bO3ka4pA7ACg539i lTxb+HdOLj1v4H7r/3bahpA= =4MN0 -----END PGP SIGNATURE-----
--- generic-build-script-orig 2004-02-09 23:43:00.216696000 -0500 +++ generic-build-script 2004-02-11 09:37:09.903897600 -0500 @@ -21,9 +21,13 @@ tscriptname=`basename $0 .sh` export PKG=`echo $tscriptname | sed -e 's/\-[^\-]*\-[^\-]*$//'` +export PKG2=lib${PKG} +export PKG3=lib${PKG}-devel export VER=`echo $tscriptname | sed -e "s/${PKG}\-//" -e 's/\-[^\-]*$//'` export REL=`echo $tscriptname | sed -e "s/${PKG}\-${VER}\-//"` export FULLPKG=${PKG}-${VER}-${REL} +export FULLPKG2=${PKG2}-${VER}-${REL} +export FULLPKG3=${PKG3}-${VER}-${REL} # determine correct decompression option and tarball filename if [ -e ${PKG}-${VER}.tar.gz ] ; then @@ -38,11 +42,16 @@ export src_pkg_name=${FULLPKG}-src.tar.bz2 export src_patch_name=${FULLPKG}.patch export bin_pkg_name=${FULLPKG}.tar.bz2 +export bin_pkg2_name=${FULLPKG2}.tar.bz2 +export bin_pkg3_name=${FULLPKG3}.tar.bz2 export src_orig_pkg=${topdir}/${src_orig_pkg_name} export src_pkg=${topdir}/${src_pkg_name} export src_patch=${topdir}/${src_patch_name} export bin_pkg=${topdir}/${bin_pkg_name} +export bin_pkg2=${topdir}/${bin_pkg2_name} +export bin_pkg3=${topdir}/${bin_pkg3_name} + export srcdir=${topdir}/${PKG}-${VER} export objdir=${srcdir}/.build export instdir=${srcdir}/.inst @@ -66,10 +75,10 @@ } prep() { (cd ${topdir} && \ - tar xv${opt_decomp}f ${src_orig_pkg} ; \ + tar xv${opt_decomp}f ${src_orig_pkg} && \ cd ${topdir} && \ - patch -p0 < ${src_patch} - && mkdirs ) + patch -p0 < ${src_patch} && \ + mkdirs ) } conf() { (cd ${objdir} && \ @@ -82,6 +91,11 @@ --libexecdir='${sbindir}' --localstatedir=/var \ --datadir='${prefix}/share' ) } +reconf() { + (cd ${objdir} && \ + rm -fr * && \ + conf ) +} build() { (cd ${objdir} && \ CFLAGS="${MY_CFLAGS}" make ) @@ -96,54 +110,69 @@ } install() { (cd ${objdir} && \ - make install DESTDIR=${instdir} + rm -fr ${instdir}/* && \ + make install DESTDIR=${instdir} && \ for f in ${prefix}/share/info/dir ${prefix}/info/dir ; do - if [ -f ${instdir}${f} ] ; then \ + if [ -f ${instdir}${f} ] ; then rm -f ${instdir}${f} ; \ fi ;\ done &&\ + if [ -d ${instdir}${prefix}/share/man ] ; then + find ${instdir}${prefix}/share/man -name "*.1" -o -name "*.3" -o \ + -name "*.3x" -o -name "*.3pm" -o -name "*.5" -o -name "*.6" -o \ + -name "*.7" -o -name "*.8" | xargs gzip -q ; \ + fi && \ + if [ -d ${instdir}${prefix}/share/info ] ; then + find ${instdir}${prefix}/share/info -name "*.info" | xargs gzip -q ;\ + fi && \ for d in ${prefix}/share/doc/${PKG}-${VER} ${prefix}/share/doc/Cygwin \ - ${sysconfdir}/postinstall ; do + ; do if [ ! -d ${instdir}${d} ] ; then - mkdir -p ${instdir}${d} ;\ + mkdir -p ${instdir}${d} ; \ fi ;\ - done &&\ - templist=""; \ - for f in ${srcdir}/ANNOUNCE ${srcdir}/CHANGES ${srcdir}/INSTALL \ - ${srcdir}/KNOWNBUG ${srcdir}/LICENSE ${srcdir}/README \ - ${srcdir}/TODO ${srcdir}/COPYING ; do \ - if [ -f $f ] ; then \ - templist="$templist $f"; \ + done && \ + templist=""; && \ + for f in ${srcdir}/ABOUT-NLS ${srcdir}/ANNOUNCE ${srcdir}/AUTHORS \ + ${srcdir}/ChangeLog ${srcdir}/CHANGES ${srcdir}/COPYING \ + ${srcdir}/INSTALL ${srcdir}/KNOWNBUG ${srcdir}/LICENSE \ + ${srcdir}/NEWS ${srcdir}/README ${srcdir}/THANKS \ + ${srcdir}/TODO ; do + if [ -f $f ] ; then + templist="$templist $f" ; \ fi ; \ done && \ - if [ ! "x$templist" = "x" ]; then \ + if [ ! "x$templist" = "x" ]; then /usr/bin/install -m 644 $templist \ ${instdir}${prefix}/share/doc/${PKG}-${VER} ; fi && \ - if [ -f ${srcdir}/CYGWIN-PATCHES/${PKG}.README ]; then \ + if [ -f ${srcdir}/CYGWIN-PATCHES/${PKG}.README ]; then /usr/bin/install -m 644 ${srcdir}/CYGWIN-PATCHES/${PKG}.README \ ${instdir}${prefix}/share/doc/Cygwin/${PKG}-${VER}.README ; \ - else \ - if [ -f ${srcdir}/CYGWIN-PATCHES/README ]; then \ - /usr/bin/install -m 644 ${srcdir}/CYGWIN-PATCHES/README \ - ${instdir}${prefix}/share/doc/Cygwin/${PKG}-${VER}.README ; \ - fi ;\ - fi ;\ - if [ -f ${srcdir}/CYGWIN-PATCHES/postinstall.sh ] ; then \ + elif [ -f ${srcdir}/CYGWIN-PATCHES/README ]; then + /usr/bin/install -m 644 ${srcdir}/CYGWIN-PATCHES/README \ + ${instdir}${prefix}/share/doc/Cygwin/${PKG}-${VER}.README ; \ + fi && \ + if [ -f ${srcdir}/CYGWIN-PATCHES/postinstall.sh ] ; then + if [ ! -d ${instdir}${sysconfdir}/postinstall ] ; then + mkdir -p ${instdir}${sysconfdir}/postinstall ; \ + fi ; \ /usr/bin/install -m 755 ${srcdir}/CYGWIN-PATCHES/postinstall.sh \ ${instdir}${sysconfdir}/postinstall/${PKG}.sh fi ) } strip() { (cd ${instdir} && \ - find . -name "*.dll" | xargs strip > /dev/null 2>&1 - find . -name "*.exe" | xargs strip > /dev/null 2>&1 - true ) + find . -name "*.dll" -o -name "*.exe" | xargs strip 2>&1 ) } list() { (cd ${instdir} && \ - find . -name "*" ! -type d | sed 's/\.\/\(.*\)/\1/' - true ) + find . -name "*" ! -type d | sed 's/\.\(.*\)/ \1/' ) +} +depend() { + (cd ${instdir} && \ + find ${instdir} -name "*.exe" -o -name "*.dll" | xargs cygcheck | \ + sed -e '/\.exe/d' \ -e 's,\\,/,g' | sort -bu | xargs -n1 cygpath -u \ + | xargs cygcheck -f | sed 's/\(.*\)/ \1/' ) } pkg() { (cd ${instdir} && \ @@ -151,8 +180,8 @@ } mkpatch() { (cd ${srcdir} && \ - find . -name "autom4te.cache" | xargs rm -rf > /dev/null - tar xv${opt_decomp}f ${src_orig_pkg} ;\ + find . -name "autom4te.cache" | xargs rm -rf && \ + tar xv${opt_decomp}f ${src_orig_pkg} && \ mv ${PKG}-${VER} ../${PKG}-${VER}-orig && \ cd ${topdir} && \ diff -urN -x '.build' -x '.inst' -x '.sinst' \ @@ -174,22 +203,27 @@ prep) prep ; STATUS=$? ;; mkdirs) mkdirs ; STATUS=$? ;; conf) conf ; STATUS=$? ;; + configure) conf ; STATUS=$? ;; + reconf) reconf ; STATUS=$? ;; build) build ; STATUS=$? ;; + make) build ; STATUS=$ ;; check) check ; STATUS=$? ;; + test) check ; STATUS=$? ;; clean) clean ; STATUS=$? ;; install) install ; STATUS=$? ;; list) list ; STATUS=$? ;; strip) strip ; STATUS=$? ;; + depend) depend ; STATUS=$? ;; package) pkg ; STATUS=$? ;; pkg) pkg ; STATUS=$? ;; mkpatch) mkpatch ; STATUS=$? ;; src-package) spkg ; STATUS=$? ;; spkg) spkg ; STATUS=$? ;; finish) finish ; STATUS=$? ;; + first) mkdirs && spkg && finish ; STATUS=$? ;; all) prep && conf && build && install && \ strip && pkg && spkg && finish ; \ STATUS=$? ;; *) echo "Error: bad arguments" ; exit 1 ;; esac exit ${STATUS} -