From 6c5d515458662449d657837349a0da00450194db Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Mon, 30 May 2005 19:58:24 +0000 Subject: [PATCH] C --- ChangeLog | 2 + cygwin/mknetrel | 280 ++++++++++++++++++---------------------- cygwin/mknetrel.auto | 32 +++-- cygwin/mknetrel.cross | 46 ++++++- cygwin/mknetrel.doc | 4 +- cygwin/mknetrel.extras | 12 ++ cygwin/mknetrel.libtool | 55 ++++++++ cygwin/mknetrel.patch | 46 ++++++- cygwin/mknetrel.split | 145 +++++++++++++++++---- 9 files changed, 415 insertions(+), 207 deletions(-) create mode 100644 cygwin/mknetrel.extras create mode 100644 cygwin/mknetrel.libtool diff --git a/ChangeLog b/ChangeLog index 49f6c997f2..14bcecf09a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2005-05-30 Jan Nieuwenhuizen + * cygwin: Update from mingw patches. + * scm/editor.scm (editor-command-template-alist): Use jedit -reuseview (Bertalan), add uedit (Patrick Huberts). diff --git a/cygwin/mknetrel b/cygwin/mknetrel index 47c3a5733e..50c6826830 100644 --- a/cygwin/mknetrel +++ b/cygwin/mknetrel @@ -1,121 +1,35 @@ # -*- shell-script -*- -# cygwin/mknetrel - LilyPond mknetrel overrides - -# This script should be used to package LilyPond for Cygwin. -# It can be used to build LilyPond on Cygwin, but also on GNU/Linux. -# -# See http://lilypond.org/web/devel/packaging.html for more information, -# report bugs to bug-lilypond@gnu.org. -# -# To build the package, do: -cat >/dev/null < libtool - chmod +x libtool -} - -fix_libtool_la () { - # fix libtool's .la dependency_libs output for dlopen - for i in $inst/lib $inst/$prefix/lib ]; do - if [ -d $i ]; then - cd $i || exit 1 - for j in $(ls -1 *la); do - mv $j .libtool-$j - sed -e 's/ *-L *[^ ][^ ]*//g' .libtool-$j > $j - chmod +x $j - done - fi - done +doc () { + # doc works, but take too long to build each time + [ "$cygwin" == "mingw" ] && return 1 + return 0 } preconfig () { + extras_preconfig - patchsrc - rm -f config.cache - - cd $src - if [ ! -x ./configure ]; then - ./autogen.sh --noconfigure - fi - - cd $build - # for cross-compiling LilyPond, fake a guile-config - if ! iscygwin; then - cd $build || exit 1 - GUILE=1.6.5 - cat > i686-cygwin-guile-config <&1 | awk '{print $NF}') + cat > $target-guile-config < config.cache ac_cv_c_bigendian=\${ac_cv_c_bigendian=no} @@ -40,6 +46,8 @@ ac_cv_spinlocks=\${ac_cv_spinlocks=no} ac_cv_func_getpgrp_void=\${ac_cv_func_getpgrp_void=yes} ac_cv_func_setvbuf_reversed=\${ac_cv_func_setvbuf_reversed=no} ac_cv_func_mkfifo=yes +# but in mingw only if winsock2.h +ac_cv_func_select=\${ac_cv_func_select=yes} ac_cv_search_dlopen=\${ac_cv_search_dlopen="none required"} ac_exeext=\${ac_exeext=} ac_cv_exeext=\${ac_cv_exeext=} @@ -52,13 +60,45 @@ ac_cv_exeext=\${ac_cv_exeext=} # sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" lt_cv_dlopen=\${lt_cv_dlopen="dlopen"} lt_cv_dlopen_libs=\${lt_cv_dlopen_libs="none required"} -## -- will this work? +## trying to get .la's in /usr/lib, will this work? -- jcn ##libltdl_cv_sys_search_path=\${libltdl_cv_sys_search_path="'"/lib /usr/lib"'"} +##libltdl_cv_sys_search_path=\${libltdl_cv_sys_search_path="'"$cygwin_prefix/lib"'"} libltdl_cv_sys_search_path=\${libltdl_cv_sys_search_path="'"$cygwin_prefix/lib"'"} -lt_cv_sys_max_cmd_len=${lt_cv_sys_max_cmd_len=8192} -##ac_cv_header_strings_h=${ac_cv_header_strings_h=yes} +lt_cv_sys_max_cmd_len=\${lt_cv_sys_max_cmd_len=8192} +##ac_cv_header_strings_h=\${ac_cv_header_strings_h=yes} ac_cv_lib_dld_shl_load=\${ac_cv_lib_dld_shl_load=no} ac_cv_lib_dl_dlopen=\${ac_cv_lib_dl_dlopen=no} +ac_cv_c_stack_direction=\${ac_cv_c_stack_direction=-1} EOF } +needdevoflags () { + return 1 +} + +extras_preconfig () { + cd $src || exit 1 + patchsrc + if [ ! -x ./configure ]; then + autoupdate + fi + for i in $(find $src -name configure | xargs grep -l PKG_CONFIG); do + sed -i~ -e 's/ x$PKG_CONFIG / "$x$PKG_CONFIG" /' $i + done + cd $build || exit 1 + CONFIGOPTS="--config-cache --enable-shared --disable-static $CONFIGOPTS" + ##[ "$cygwin" == "mingw" ] && CONFIGOPTS="'LDFLAGS=-mwindows -mms-bitfields' $CONFIGOPTS" + iscygwin || crosscache +} + +preconfig () { + extras_preconfig +} + +extras_postconfig () { + fix_libtool_script +} + +postconfig () { + extras_postconfig +} diff --git a/cygwin/mknetrel.doc b/cygwin/mknetrel.doc index 75d7ab4717..793a8dc3df 100644 --- a/cygwin/mknetrel.doc +++ b/cygwin/mknetrel.doc @@ -7,7 +7,7 @@ docprefix=$prefix/share docdir=$docprefix/doc -cygdocdir=$docdir/Cygwin +cygdocdir=$docdir/$Cygwin infodir=$docprefix/info mandir=$docprefix/man packagedocdir=$docdir/$base-$ver @@ -24,7 +24,7 @@ fixdoc () { rm -rf $inst/$prefix/$i fi done - if [-f $inst/$docprefix/$base ]; then + if [ -f $inst/$docprefix/$base ]; then mkdir -p $packagedocdir tar -C $inst/$docprefix/$base -cf - . | tar -C $inst/$packagedocdir -xf - fi diff --git a/cygwin/mknetrel.extras b/cygwin/mknetrel.extras new file mode 100644 index 0000000000..c893672ee7 --- /dev/null +++ b/cygwin/mknetrel.extras @@ -0,0 +1,12 @@ +# -*- shell-script -*- + +# copy and include extra mknetrel stuff +extras=${extras-"auto cross doc libtool patch split"} +[ ! -d $src/$cygwin ] && mkdir -p $src/$cygwin +i=extras +cp -pv $mknetrel/$i $src/$cygwin/mknetrel.$i +for i in $extras; do + [ -r $mknetrel/$i ] && cp -pv $mknetrel/$i $src/$cygwin/mknetrel.$i + . $src/$cygwin/mknetrel.$i +done +cp -pv $extra/$base $src/$cygwin/mknetrel diff --git a/cygwin/mknetrel.libtool b/cygwin/mknetrel.libtool new file mode 100644 index 0000000000..d28bf08376 --- /dev/null +++ b/cygwin/mknetrel.libtool @@ -0,0 +1,55 @@ +# -*- shell-script -*- +# mknetrel.libtool -- libtool fixups + +fix_libtool_dltool () { + sed -i~ \ + -e "s/^DLLTOOL=.*/DLLTOOL='$target-dlltool'/" \ + -e "s/^DLLTOOL=/HOST_CC=gcc\nDLLTOOL=/" \ + -e "s/^HOST_CC=/SED=sed\nHOST_CC=/" \ + -e "s/^allow_undefined_flag=.*/allow_undefined_flag=/" \ + $1 +## -e "s@^sys_lib_dlsearch_path_spec=.*@sys_lib_dlsearch_path_spec='$cygwin_prefix/lib'@" +} + +fix_libtool_dlopen_undefined () { + for i in $(find $build -name libtool); do + sed -i~ -e 's/\(allow_undefined_flag=.*\)unsupported/\1/' $i + done +} + +fix_libtool_script () { + [ $base != "libtool" ] || return 0 + for i in $mknetrel_root/bin/$target-libtool \ + $cygwin_prefix/bin/$target-libtool; do + [ -x "$i" ] && fixtool=$i + done + for i in $(find $build -name libtool); do + [ -n "$fixtool" ] || exit 1 + cp --backup $fixtool $i + done +} + +fix_libtool_la () { + # fix libtool's .la dependency_libs output for dlopen + for i in $inst/lib $inst/$prefix/lib; do + if [ -d "$i" ]; then + cd $i || exit 1 + for j in $(ls -1 *.la); do + sed -i~ \ + -e 's/ *-L *[^"'"'"' ][^"'"'"' ]*//g'\ + -e "s@\( \|=\)\(/usr/lib/lib\)@\1$cygwin_root\2@g"\ + $j + done + fi + done + + # fix some libtool's .dll name + mv $inst/$prefix/lib/$dll_prefix$base-$sover $inst/$prefix/bin/$dll_prefix$base-$sover.dll + + # more libtool fixups. I love libtool. + sed -i~ \ + -e "s@^dlname=.*@dlname='../bin/$dll_prefix$base-$sover.dll'@" \ + -e "s@^library_names=.*@library_names='$dll_prefix$base.dll.a'@" \ + -e "s@^old_library=.*@old_library='$dll_prefix$base.a'@" \ + $inst/$prefix/lib/lib$base.la +} diff --git a/cygwin/mknetrel.patch b/cygwin/mknetrel.patch index 31eed60f83..ffa827d947 100644 --- a/cygwin/mknetrel.patch +++ b/cygwin/mknetrel.patch @@ -4,15 +4,47 @@ # mknetrel.patch -- patch sources # -dopatchsrc () { +dopatch () { cd $src - cp -p $patch/$package.patch $src/cygwin/ - patch -p1 < $patch/$package.patch - [ -d cygwin -a ! -e CYGWIN-PATCHES ] && ln -s cygwin CYGWIN-PATCHES - [ -d CYGWIN-PATCHES -a ! -e cygwin ] && ln -s CYGWIN-PATCHES cygwin - [ -d CYGWIN-PATCHES ] || mkdir CYGWIN-PATCHES + patch -Np1 < $patch/$package.patch + cp -p $patch/$package.patch $src/$cygwin/ } +dodiff () { + [ -r $cygwin/.cvsignore ] || cat > $cygwin/.cvsignore < $patch/$package.patch- + if [ -s $patch/$package.patch- ]; then + cp --backup -pv $patch/$package.patch- $patch/$package.patch + cp --backup -pv $patch/$package.patch- $src/$cygwin/$package.patch + fi + rm $patch/$package.patch- +} + patchsrc () { - [ -r $patch/$package.patch -a ! -r $src/CYGWIN-PATCHES -a ! -r $src/cygwin ] && dopatchsrc + [ -r $patch/$package.patch -a ! -r $src/$cygwin/$package.patch ] && dopatch + cd $src + upstream=$(expr "$package" : '\(.*-[-.0-9]*.*\)-[0-9]*') + [ -r $netrel_root/src/$upstream -a -r $patch/$package.patch -a $src/$cygwin/mknetrel -nt $patch/$package.patch ] && dodiff } diff --git a/cygwin/mknetrel.split b/cygwin/mknetrel.split index e804e545ec..a64822b2ad 100644 --- a/cygwin/mknetrel.split +++ b/cygwin/mknetrel.split @@ -1,69 +1,138 @@ # -*- shell-script -*- - -# # mknetrel.split -- split subpackages -# -presplit () { true; } +extras_preinstall () { + :; +} -lib_name () { - echo lib$base$sover +extras_presplit () { + :; +} + +presplit () { + :; } devel_name () { - echo $base-devel + if ! libdev 2> /dev/null ; then + echo $base-devel + else + if expr "$base" : "\(lib\)" > /dev/null 2>&1; then + echo $base-dev + else + echo lib$base-dev + fi + fi } doc_name () { echo $base-doc } -lib_split () { +lib_name () { + if expr "$base" : "\(lib\)" > /dev/null 2>&1; then + echo $base$sover + else + echo lib$base$sover + fi +} + +extras_lib_split () { mkdir -p ./$prefix/bin || exit 1 mv $inst/$prefix/bin/*.dll ./$prefix/bin - # dlopen-able .la files go in BIN dir, BIN OR LIB package - mkdir -p ./$prefix/bin || exit 1 - mv $inst/$prefix/lib/lib*[0-9]*.la ./$prefix/bin + # better move dlls to bin, see gmp + mkdir -p ./$prefix/lib || exit 1 + mv $inst/$prefix/lib/*.dll ./$prefix/lib + mkdir -p ./$prefix/lib || exit 1 + mv $inst/$prefix/lib/lib*.la ./$prefix/lib mkdir -p ./$prefix/share || exit 1 mv $inst/$prefix/share/$base ./$prefix/share - rmdir $inst/prefix/bin || true - rmdir $inst/prefix/lib || true - rmdir $inst/prefix/share || true + rmdir $inst/$prefix/bin || true + rmdir $inst/$prefix/lib || true + rmdir $inst/$prefix/share || true true } -devel_split () { +extras_devel_split () { mkdir -p ./$prefix/bin || exit 1 + mv $inst/bin/*-config ./$prefix/bin tar -C $inst -cf - ./$prefix/include | tar -xf - rm -rf $inst/$prefix/include # Only static .a libs in devel, load time .la files go in LIB or # BIN package. mkdir -p ./$prefix/lib || exit 1 mv $inst/$prefix/lib/*.a ./$prefix/lib + mv $inst/$prefix/lib/pkgconfig ./$prefix/lib mkdir -p ./$prefix/share || exit 1 tar -C $inst -cf - ./$prefix/share/aclocal | tar -xf - rm -rf $inst/$prefix/share/aclocal - rmdir $inst/prefix/lib || true - rmdir $inst/prefix/share || true + tar -C $inst -cf - ./$prefix/share/libtool | tar -xf - + rm -rf $inst/$prefix/share/libtool + rmdir $inst/$prefix/lib || true + rmdir $inst/$prefix/share || true true } -doc_split () { +extras_doc_split () { mkdir -p ./$docprefix || exit 1 mkdir -p ./$infodir || exit 1 tar -C $inst -cf - ./$infodir | tar -xf - rm -rf $inst/$infodir + if [ "$cygwin" == "mingw" ]; then + mkdir -p ./$mandir || exit 1 + tar -C $inst -cf - ./$mandir | tar -xf - + rm -rf $inst/$mandir + fi true } -prebuild () { +extras_prebuild () { for i in $sub_packages; do rm -rf $inst-$i mkdir -p $inst-$i || exit 1 done } + +extras_postinstall () { + fixdoc + fix_libtool_la -domkdist() { + mkdir -p $inst-doc/$docprefix + cd $build || exit 1 + + cd $src || exit 1 + install -d -m755 $inst/$packagedocdir + + readmes="$(find . -maxdepth 1 -type f -a -name '[A-Z]*' | egrep -v 'Makefile|GNUmakefile')" + install -m644 $readmes $inst/$packagedocdir + + ## Cygwin readmes + cd $src || exit 1 + install -d -m755 $inst/$cygdocdir + install -m644 $cygwin/changelog $inst/$cygdocdir/changelog.$Cygwin + + cd $src || exit 1 + install -m644 $cygwin/README $inst/$packagedocdir/README.$Cygwin + install -m644 $cygwin/README $inst/$cygdocdir/$package.README + cd $build || exit 1 + install -m644 $cygwin/out/README $inst/$packagedocdir/README.$Cygwin + install -m644 $cygwin/out/README $inst/$cygdocdir/$package.README +} + +hint () { + if [ -r $shint ]; then + cp $shint $hint + else + cat > $hint <> $hint + grep ^build-requires: $hint || echo "build-requires: $build_depends" >> $hint +} + +domkdist () { # # Fix up installation slightly # @@ -105,29 +174,53 @@ domkdist() { echo creating $tarstem.tar.bz2 cd $inst || exit 1 - f=$src/cygwin/setup.hint && test -r $f && cp $f $uploads - f=$src/cygwin/$base.hint && test -r $f && cp $f $uploads/setup.hint - find * -print | sort | tar -T - --no-recursion --owner=0 --group=0 -cjf $tarstem.tar.bz2 + shint=$src/$cygwin/setup.hint + hint=$uploads/setup.hint + hint + find * -print | egrep -v '\.cvsignore|\.bak$|\.orig$|\.o$|\.rej$|~$|^.#|CVS|/tags$' | sort | tar -T - --no-recursion --owner=0 --group=0 -cjf $tarstem.tar.bz2 # Any sub-packages for i in $sub_packages; do subname=$(${i}_name) subload=$uploads/$subname subtarstem=$subload/$subname-$ver + shint=$src/$cygwin/$subname.hint + hint=$subload/setup.hint + depends=$(eval echo '$'${i}_depends) mkdir -p $subload || exit 1 echo creating $subtarstem.tar.bz2 - f=$src/cygwin/$subname.hint && test -r $f && cp $f $subload/setup.hint + hint + grep ^external-source: $hint || echo "external-source: $base" >> $hint cd $inst-$i hard2soft - find * -print | sort | tar -T - --no-recursion --owner=0 --group=0 -cjf $subtarstem.tar.bz2 + find * -print | egrep -v '\.cvsignore|\.bak$|\.orig$|\.o$|\.rej$|~$|^.#|CVS|/tags$' | sort | tar -T - --no-recursion --owner=0 --group=0 -cjf $subtarstem.tar.bz2 done # The source package cd $src/.. || exit 1 echo creating "$tarstem"-src.tar.bz2 - find $package_src/* -print -follow | egrep -v '\.cvsignore|\.bak$|\.orig$|\.o$|~$|^.#|CVS|%redact|/tags$' | egrep -v "$src_exclude" | sort | tar -T - --no-recursion --owner=0 --group=0 -cjf "$tarstem"-src.tar.bz2 + ##find $package_src/* -print -follow | egrep -v '\.cvsignore|\.bak$|\.orig$|\.o$|~$|^.#|CVS|%redact|/tags$' | egrep -v "$src_exclude" | sort | tar -T - --no-recursion --owner=0 --group=0 -cjf "$tarstem"-src.tar.bz2 + find $package_src/* -print | egrep -v '\.cvsignore|\.bak$|\.orig$|\.o$|\.rej$|~$|^.#|CVS|%redact|/tags$' | egrep -v "$src_exclude" | sort | tar -T - --no-recursion --owner=0 --group=0 -cjf "$tarstem"-src.tar.bz2 + ##cd $package_src && tar -cj --exclude='\.cvsignore' --exclude='\.bak$' --exclude='\.orig$' --exclude='\.o$' --exclude='~$' --exclude='^.#' --exclude='CVS' --exclude='%redact' --exclude='/tags$' --owner=0 --group=0 -f "$tarstem"-src.tar.bz2 . postpackage } +devel_split () { + extras_devel_split +} +doc_split () { + extras_doc_split +} +lib_split () { + extras_lib_split +} + +prebuild () { + extras_prebuild +} + +postinstall () { + extras_postinstall +} -- 2.39.2