automake
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

33-dist-flavors.patch


From: Akim Demaille
Subject: 33-dist-flavors.patch
Date: Mon, 19 Feb 2001 03:04:38 +0100

This patch includes all the diffs of Makefile.ins, i.e., subdirs'
Makefile have not changed.  The big change in the top Makefile.in
comes from the fact that the so called `find complex command' is
attached to distdir (where it belongs IMHO), rather than to each
dist-like target.

But I also introduced a bug, due to my misunderstanding the
functioning of the @dist_targets handling.  Patch 35 fixes it.  The
bug can be observed in ./Makefile.in: *after* tarball was made, the
dist-info hook is run.

Index: ChangeLog
from  Akim Demaille  <address@hidden>

        * distdir.am (distdir): Be sure to have permissive rights on its
        contents.
        (dist-all, dist-bzip2, dist-zip, dist-tarZ): New conditional
        targets.
        And BTW, all these guys are phony.
        * automake.in (&handle_dist_worker): As its name doesn't indicate,
        output distributions.
        (&handle_dist): As its name doesn't indicate, don't.
        (&initialize_global_constants): Don't define variables which
        content is now handled by distdir.am.
        But register `dist-all' as a factored target.
        (&handle_factored_dependencies): Don't output empty targets.

Index: automake.in
--- automake.in Sat, 17 Feb 2001 17:56:59 +0100 akim (am/f/39_automake.i 1.40 
755)
+++ automake.in Sat, 17 Feb 2001 18:10:07 +0100 akim (am/f/39_automake.i 1.40 
755)
@@ -2663,9 +2663,13 @@ sub handle_dist_worker
     $output_rules .=
       &file_contents ('distdir',
                      $xform
-                     . &transform_cond ('CYGNUS' => $cygnus_mode,
-                                        'SUBDIRS'
-                                        => &variable_defined ('SUBDIRS')));
+                     . &transform_cond ('CYGNUS'   => $cygnus_mode,
+                                        'SHAR'     => $options{'dist-shar'},
+                                        'BZIP2'    => $options{'dist-bzip2'},
+                                        'ZIP'      => $options{'dist-zip'},
+                                        'COMPRESS' => $options{'dist-tarZ'},
+                                        'SUBDIRS'  =>
+                                           &variable_defined ('SUBDIRS')));

     # If the target `dist-hook' exists, make sure it is run.  This
     # allows users to do random weird things to the distribution
@@ -2798,23 +2802,6 @@ sub handle_dist

        # Arg, this file should have been named `distcheck'.
        $output_rules .= &file_contents ('dist', $xform);
-
-       local ($dist_all) = ('dist-all: distdir' . "\n"
-                            . $dist_header);
-       local ($curs);
-       foreach $curs ('dist', 'dist-shar', 'dist-zip', 'dist-tarZ',
-                      'dist-bzip2')
-       {
-           if (defined $options{$curs} || $curs eq 'dist')
-           {
-               $output_rules .= ($curs . ': distdir' . "\n"
-                                 . $dist_header
-                                 . $dist{$curs}
-                                 . $dist_trailer);
-               $dist_all .= $dist{$curs};
-           }
-       }
-       $output_rules .= $dist_all . $dist_trailer;
     }

     # Generate distdir target.
@@ -3909,6 +3896,9 @@ sub handle_factored_dependencies
 {
     foreach (sort target_cmp keys %dependencies)
     {
+        # If there is nothing about this guy, skip it.
+        next
+         unless @{$dependencies{$_}} || $actions{$_};
         &pretty_print_rule ("$_:", "\t",
                            sort @{$dependencies{$_}});
        $output_rules .= $actions{$_};
@@ -6618,45 +6608,6 @@ sub initialize_global_constants
 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 # PARTICULAR PURPOSE.
 ";
-
-    # This complex find command will try to avoid changing the modes of
-    # links into the source tree, in case they're hard-linked.  It will
-    # also make directories writable by everybody, because some
-    # brain-dead tar implementations change ownership and permissions of
-    # a directory before extracting the files, thus becoming unable to
-    # extract them.
-    # Ignore return result from chmod, because it might give an error
-    # if we chmod a symlink.
-    # Another nastiness: if the file is unreadable by us, we make it
-    # readable regardless of the number of links to it.  This only
-    # happens in perverse cases.
-    # We use $(install_sh) because that is a known-portable way to
-    # modify the file in place in the source tree.
-    $dist_header = '   -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx 
{} \; -o \\
-         ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \\
-         ! -type d ! -perm -400 -exec chmod a+r {} \; -o \\
-         ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} 
\; \\
-       || chmod -R a+r $(distdir)
-';
-    $dist{'dist-bzip2'} = ("\t"
-                          . '$(AMTAR) chof - $(distdir) | bzip2 -9 -c > 
$(distdir).tar.bz2'
-                          . "\n");
-    $dist{'dist-tarZ'} = ("\t"
-                    . '$(AMTAR) chof - $(distdir) | compress -c > 
$(distdir).tar.Z'
-                    . "\n");
-    $dist{'dist-shar'} = ("\t"
-                    . 'shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c > 
$(distdir).shar.gz'
-                    . "\n");
-    $dist{'dist-zip'} = ("\t" . '-rm -f $(distdir).zip' . "\n" .
-                        "\t" . 'zip -rq $(distdir).zip $(distdir)' . "\n");
-
-    # Note that we don't use GNU tar's `-z' option.  One reason (but
-    # not the only reason) is that some versions of tar (e.g., OSF1)
-    # interpret `-z' differently.
-    $dist{'dist'} = ("\t"
-                    .  '$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c 
> $(distdir).tar.gz'
-                    . "\n");
-    $dist_trailer = "\t" . '-chmod -R a+w $(distdir) > /dev/null 2>&1; rm -rf 
$(distdir)' . "\n";
 }

 # (Re)-Initialize per-Makefile.am variables.
@@ -6751,6 +6702,10 @@ sub initialize_per_input
        'mostlyclean'          => [],
        'maintainer-clean'     => [],
        'distclean'            => [],
+
+       # Building all the flavors of distributions.
+       'dist-all'             => [],
+
        '.PHONY'               => []
       );
     # Holds the factored actions.  Tied to %DEPENDENCIES, i.e., filled
Index: distdir.am
--- distdir.am Fri, 09 Feb 2001 04:37:00 +0100 akim (am/h/17_distdir.am 1.4 644)
+++ distdir.am Sat, 17 Feb 2001 18:13:43 +0100 akim (am/h/17_distdir.am 1.4 644)
@@ -23,14 +23,14 @@
 ## For Gnits users, this is pretty handy.  Look at 15 lines
 ## in case some explanatory text is desirable.
 ##
-?TOPDIR??CK-NEWS?      @if sed 15q $(srcdir)/NEWS | fgrep -e "$(VERSION)" > 
/dev/null; then :; else \
+?TOPDIR??CK-NEWS?      @if sed 15q $(srcdir)/NEWS | fgrep -e "$(VERSION)" 
>/dev/null; then :; else \
 ?TOPDIR??CK-NEWS?        echo "NEWS not updated; not releasing" 1>&2; \
 ?TOPDIR??CK-NEWS?        exit 1; \
 ?TOPDIR??CK-NEWS?      fi
 ##
 ## Only for the top dir.
 ##
-?TOPDIR?       -chmod -R a+w $(distdir) > /dev/null 2>&1; rm -rf $(distdir)
+?TOPDIR?       -chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir)
 ?TOPDIR?       mkdir $(distdir)
 ##
 ##
@@ -80,3 +80,69 @@
 ?SUBDIRS?            || exit 1; \
 ?SUBDIRS?        fi; \
 ?SUBDIRS?      done
+##
+## This complex find command will try to avoid changing the modes of
+## links into the source tree, in case they're hard-linked.  It will
+## also make directories writable by everybody, because some
+## brain-dead tar implementations change ownership and permissions of
+## a directory before extracting the files, thus becoming unable to
+## extract them.
+##
+## Ignore return result from chmod, because it might give an error
+## if we chmod a symlink.
+##
+## Another nastiness: if the file is unreadable by us, we make it
+## readable regardless of the number of links to it.  This only
+## happens in perverse cases.
+##
+## We use $(install_sh) because that is a known-portable way to modify
+## the file in place in the source tree.
+##
+?TOPDIR?       -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; 
-o \
+?TOPDIR?         ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+?TOPDIR?         ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+?TOPDIR?         ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r 
{} {} \; \
+?TOPDIR?       || chmod -R a+r $(distdir)
+
+
+
+
+## --------------------------------------- ##
+## Building various distribution flavors.  ##
+## --------------------------------------- ##
+
+## Note that we don't use GNU tar's `-z' option.  One reason (but not
+## the only reason) is that some versions of tar (e.g., OSF1)
+## interpret `-z' differently.
+
+?TOPDIR?.PHONY: dist-all dist
+?TOPDIR?dist-all: dist
+?TOPDIR?dist: distdir
+?TOPDIR?       $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c 
>$(distdir).tar.gz
+?TOPDIR?       -chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir)
+
+
+?TOPDIR??BZIP2?.PHONY dist-all: dist-bzip2
+?TOPDIR??BZIP2?.PHONY: dist-bzip2
+?TOPDIR??BZIP2?dist-bzip2: distdir
+?TOPDIR??BZIP2?        $(AMTAR) chof - $(distdir) | bzip2 -9 -c 
>$(distdir).tar.bz2
+?TOPDIR??BZIP2?        -chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf 
$(distdir)
+
+
+?TOPDIR??COMPRESS?.PHONY dist-all: dist-tarZ
+?TOPDIR??COMPRESS?dist-tarZ: distdir
+?TOPDIR??COMPRESS?     $(AMTAR) chof - $(distdir) | compress -c 
>$(distdir).tar.Z
+?TOPDIR??COMPRESS?     -chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf 
$(distdir)
+
+
+?TOPDIR??SHAR?.PHONY dist-all: dist-shar
+?TOPDIR??SHAR?dist-shar: distdir
+?TOPDIR??SHAR? shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+?TOPDIR??SHAR? -chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir)
+
+
+?TOPDIR??ZIP?.PHONY dist-all: dist-zip
+?TOPDIR??ZIP?dist-zip: distdir
+?TOPDIR??ZIP?  -rm -f $(distdir).zip
+?TOPDIR??ZIP?  zip -rq $(distdir).zip $(distdir)
+?TOPDIR??ZIP?  -chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir)
Index: Makefile.in
--- Makefile.in Sat, 17 Feb 2001 17:56:59 +0100 akim (am/h/16_Makefile.i 1.12 
644)
+++ Makefile.in Sat, 17 Feb 2001 18:15:07 +0100 akim (am/h/16_Makefile.i 1.12 
644)
@@ -481,29 +481,13 @@
        echo "$$dashes"; \
        echo "$$banner"; \
        echo "$$dashes"
-dist: distdir
-       -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
-         ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
-         ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
-         ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} 
\; \
-       || chmod -R a+r $(distdir)
-       $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c > 
$(distdir).tar.gz
-       -chmod -R a+w $(distdir) > /dev/null 2>&1; rm -rf $(distdir)
-dist-all: distdir
-       -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
-         ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
-         ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
-         ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} 
\; \
-       || chmod -R a+r $(distdir)
-       $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c > 
$(distdir).tar.gz
-       -chmod -R a+w $(distdir) > /dev/null 2>&1; rm -rf $(distdir)

 distdir: $(DISTFILES)
-       @if sed 15q $(srcdir)/NEWS | fgrep -e "$(VERSION)" > /dev/null; then :; 
else \
+       @if sed 15q $(srcdir)/NEWS | fgrep -e "$(VERSION)" >/dev/null; then :; 
else \
          echo "NEWS not updated; not releasing" 1>&2; \
          exit 1; \
        fi
-       -chmod -R a+w $(distdir) > /dev/null 2>&1; rm -rf $(distdir)
+       -chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir)
        mkdir $(distdir)
        $(mkinstalldirs) $(distdir)/. .
        @for file in $(DISTFILES); do \
@@ -527,6 +511,15 @@
              || exit 1; \
          fi; \
        done
+       -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
+         ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+         ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+         ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} 
\; \
+       || chmod -R a+r $(distdir)
+
+dist: distdir
+       $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+       -chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir)
        $(MAKE) $(AM_MAKEFLAGS) top_distdir="$(top_distdir)" 
distdir="$(distdir)" dist-info
 info-am: $(INFO_DEPS)
 info: info-recursive
@@ -577,6 +570,8 @@

 clean-am: clean-generic mostlyclean-am

+dist-all: dist
+
 distclean: distclean-recursive
        -rm -f config.status

@@ -593,10 +588,10 @@
 mostlyclean-am: mostlyclean-aminfo mostlyclean-generic mostlyclean-vti

 .PHONY: all all-am all-recursive check check-am check-recursive clean \
-       clean-generic clean-recursive distclean distclean-generic \
-       distclean-recursive distclean-tags distdir dvi dvi-am \
-       dvi-recursive info info-am info-recursive install install-am \
-       install-binSCRIPTS install-data install-data-am \
+       clean-generic clean-recursive dist dist-all distclean \
+       distclean-generic distclean-recursive distclean-tags distdir \
+       dvi dvi-am dvi-recursive info info-am info-recursive install \
+       install-am install-binSCRIPTS install-data install-data-am \
        install-data-recursive install-dist_pkgdataDATA \
        install-dist_scriptDATA install-exec install-exec-am \
        install-exec-recursive install-info-am install-recursive \



reply via email to

[Prev in Thread] Current Thread [Next in Thread]