Package: gzip
Version: 1.3.5-15
Severity: wishlist
Tags: patch

Hi

Because of a problem with cmdline size limits in Linux, win32-loader needs
to make use of cpio and gzip binaries to append its preseeding information
to D-I when running on win32 (see bug #442474 for details).

Please, could you provide a win32 binary of gzip as a "gzip-win32" binary
package, so that win32-loader can use it as build-dependency?

You'll find attached:

  - debian.diff: Arranges the package to produce a gzip-win32 binary.

  - mingw32.diff: Fix in upstream code to allow compilation of win32
    binaries via mingw32.  This has been merged upstream:

    http://lists.gnu.org/archive/html/bug-gzip/2007-11/msg00008.html

Note: as a side-effect, it might turn out that the ftp-masters will find this
gzip.exe build useful for automated maintenance of debian/tools/gzip124.exe ;-)

Thanks!

-- System Information:
Debian Release: lenny/sid
  APT prefers stable
  APT policy: (500, 'stable')
Architecture: amd64 (x86_64)
Shell:  /bin/sh linked to /bin/bash
Kernel: Linux 2.6.18-5-amd64
Locale: LANG=ca_AD.UTF-8, LC_CTYPE=ca_AD.UTF-8 (charmap=UTF-8)

Versions of packages gzip depends on:
ii  debianutils            2.17.2            Miscellaneous utilities specific t
ii  libc6                  2.3.6.ds1-13etch2 GNU C Library: Shared libraries

gzip recommends no packages.

-- no debconf information
diff -x gzip.c -Nurp gzip-1.3.12/debian/control gzip-1.3.12.new/debian/control
--- gzip-1.3.12/debian/control  2007-12-26 18:13:45.000000000 +0100
+++ gzip-1.3.12.new/debian/control      2007-12-26 18:15:30.000000000 +0100
@@ -19,3 +19,10 @@ Description: The GNU compression utility
  .
  This package can also decompress '.Z' files created with 'compress'.
 
+Package: gzip-win32
+Architecture: all
+Priority: extra
+Suggests: wine
+Description: The GNU compression utility (win32 build)
+ This is a win32 version of gzip.  It's meant to be used by the win32-loader
+ component of Debian-Installer.
diff -x gzip.c -Nurp gzip-1.3.12/debian/gzip-win32.dirs 
gzip-1.3.12.new/debian/gzip-win32.dirs
--- gzip-1.3.12/debian/gzip-win32.dirs  1970-01-01 01:00:00.000000000 +0100
+++ gzip-1.3.12.new/debian/gzip-win32.dirs      2007-12-26 18:33:00.000000000 
+0100
@@ -0,0 +1 @@
+usr/share/win32
diff -x gzip.c -Nurp gzip-1.3.12/debian/rules gzip-1.3.12.new/debian/rules
--- gzip-1.3.12/debian/rules    2007-12-26 18:13:45.000000000 +0100
+++ gzip-1.3.12.new/debian/rules        2007-12-26 18:35:31.000000000 +0100
@@ -21,58 +21,83 @@ endif
 configure: configure-stamp
 configure-stamp:
        dh_testdir
-       CFLAGS=$(CFLAGS) ./configure \
+       mkdir -p build
+       cd build && CFLAGS=$(CFLAGS) ../configure \
                --prefix=/usr --bindir=/bin \
                --infodir=`pwd`/debian/gzip/usr/share/info \
                --mandir=`pwd`/debian/gzip/usr/share/man $(CONFARGS)
        touch configure-stamp
 
-build: configure-stamp build-stamp
-build-stamp:
+configure-win32: configure-win32-stamp
+configure-win32-stamp:
        dh_testdir
-       $(MAKE)
+       mkdir -p build-win32
+       cd build-win32 && ../configure --host=i586-mingw32msvc
+       touch configure-win32-stamp
+
+build: build-stamp
+build-stamp: configure-stamp
+       dh_testdir
+       $(MAKE) -C build
        touch build-stamp
 
+build-win32: build-win32-stamp
+build-win32-stamp: configure-win32-stamp
+       dh_testdir
+       $(MAKE) -C build-win32
+       touch build-win32-stamp
+
 clean:
        dh_testdir
        dh_testroot
-       -rm -f build-stamp configure-stamp
-       make distclean || exit 0
+       -rm -f build-stamp build-win32-stamp configure-stamp 
configure-win32-stamp
+       -rm -rf build build-win32
        dh_clean
 
-install: build
+install: build build-win32
        dh_testdir
        dh_testroot
        dh_clean -k
        dh_installdirs
 
-       make install prefix=debian/gzip/usr bindir=debian/gzip/bin 
+       $(MAKE) -C build install prefix=`pwd`/debian/gzip/usr 
bindir=`pwd`/debian/gzip/bin 
        install -o root -g root -m 0644 debian/gzip.lintian \
                debian/gzip/usr/share/lintian/overrides/gzip
+       install -m 0755 build-win32/gzip.exe debian/gzip-win32/usr/share/win32/
 
-binary-indep:  build install
+binary-indep:  build-win32 install
+       dh_testdir -i
+       dh_testroot -i
+       dh_installdocs -i README* TODO
+       dh_installchangelogs -i ChangeLog
+       dh_compress -i
+       dh_fixperms -i
+       dh_installdeb -i
+       dh_gencontrol -i
+       dh_md5sums -i
+       dh_builddeb -i
 
 binary-arch:   build install
-       dh_testdir
-       dh_testroot
-       dh_installdocs README* TODO
-       dh_installmanpages
-       dh_installinfo doc/gzip.info
-       dh_installchangelogs ChangeLog
-       dh_link
-       dh_strip
-       dh_compress
+       dh_testdir -s
+       dh_testroot -s
+       dh_installdocs -s README* TODO
+       dh_installmanpages -s
+       dh_installinfo -s doc/gzip.info
+       dh_installchangelogs -s ChangeLog
+       dh_link -s
+       dh_strip -s
+       dh_compress -s
        ln -s gunzip.1.gz debian/gzip/usr/share/man/man1/uncompress.1.gz
        ln -s zgrep.1.gz debian/gzip/usr/share/man/man1/zegrep.1.gz
        ln -s zgrep.1.gz debian/gzip/usr/share/man/man1/zfgrep.1.gz
-       dh_fixperms
+       dh_fixperms -s
        # You may want to make some executables suid here.
-       dh_makeshlibs
-       dh_installdeb
-       dh_shlibdeps
-       dh_gencontrol
-       dh_md5sums
-       dh_builddeb
+       dh_makeshlibs -s
+       dh_installdeb -s
+       dh_shlibdeps -s
+       dh_gencontrol -s
+       dh_md5sums -s
+       dh_builddeb -s
 
 binary: binary-indep binary-arch
 .PHONY: build clean binary-indep binary-arch binary install configure
2007-11-25  Paul Eggert  <[EMAIL PROTECTED]>

	* gzip.c (handled_sig): Move out of install_signal_handlers, and
	move previous to all uses of SIGPIPE, to fix a bug encountered when
	porting to mingw32.  Reported by Robert Millan in
	<http://lists.gnu.org/archive/html/bug-gzip/2007-11/msg00007.html>.

Index: gzip.c
===================================================================
RCS file: /cvsroot/gzip/gzip/gzip.c,v
retrieving revision 1.20
retrieving revision 1.21
diff -p -u -r1.20 -r1.21
--- gzip.c	3 Jul 2007 20:37:08 -0000	1.20
+++ gzip.c	25 Nov 2007 17:19:46 -0000	1.21
@@ -232,6 +232,30 @@ unsigned insize;           /* valid byte
 unsigned inptr;            /* index of next byte to be processed in inbuf */
 unsigned outcnt;           /* bytes in output buffer */
 
+static int handled_sig[] =
+  {
+    /* SIGINT must be first, as 'foreground' depends on it.  */
+    SIGINT
+
+#ifdef SIGHUP
+    , SIGHUP
+#endif
+#ifdef SIGPIPE
+    , SIGPIPE
+#else
+# define SIGPIPE 0
+#endif
+#ifdef SIGTERM
+    , SIGTERM
+#endif
+#ifdef SIGXCPU
+    , SIGXCPU
+#endif
+#ifdef SIGXFSZ
+    , SIGXFSZ
+#endif
+  };
+
 struct option longopts[] =
 {
  /* { name  has_arg  *flag  val } */
@@ -1755,30 +1779,7 @@ local void treat_dir (fd, dir)
 static void
 install_signal_handlers ()
 {
-  static int sig[] =
-    {
-      /* SIGINT must be first, as 'foreground' depends on it.  */
-      SIGINT
-
-#ifdef SIGHUP
-      , SIGHUP
-#endif
-#ifdef SIGPIPE
-      , SIGPIPE
-#else
-# define SIGPIPE 0
-#endif
-#ifdef SIGTERM
-      , SIGTERM
-#endif
-#ifdef SIGXCPU
-      , SIGXCPU
-#endif
-#ifdef SIGXFSZ
-      , SIGXFSZ
-#endif
-    };
-  int nsigs = sizeof sig / sizeof sig[0];
+  int nsigs = sizeof handled_sig / sizeof handled_sig[0];
   int i;
 
 #if SA_NOCLDSTOP
@@ -1787,9 +1788,9 @@ install_signal_handlers ()
   sigemptyset (&caught_signals);
   for (i = 0; i < nsigs; i++)
     {
-      sigaction (sig[i], NULL, &act);
+      sigaction (handled_sig[i], NULL, &act);
       if (act.sa_handler != SIG_IGN)
-	sigaddset (&caught_signals, sig[i]);
+	sigaddset (&caught_signals, handled_sig[i]);
     }
 
   act.sa_handler = abort_gzip_signal;
@@ -1797,20 +1798,20 @@ install_signal_handlers ()
   act.sa_flags = 0;
 
   for (i = 0; i < nsigs; i++)
-    if (sigismember (&caught_signals, sig[i]))
+    if (sigismember (&caught_signals, handled_sig[i]))
       {
 	if (i == 0)
 	  foreground = 1;
-	sigaction (sig[i], &act, NULL);
+	sigaction (handled_sig[i], &act, NULL);
       }
 #else
   for (i = 0; i < nsigs; i++)
-    if (signal (sig[i], SIG_IGN) != SIG_IGN)
+    if (signal (handled_sig[i], SIG_IGN) != SIG_IGN)
       {
 	if (i == 0)
 	  foreground = 1;
-	signal (sig[i], abort_gzip_signal);
-	siginterrupt (sig[i], 1);
+	signal (handled_sig[i], abort_gzip_signal);
+	siginterrupt (handled_sig[i], 1);
       }
 #endif
 }

Reply via email to