X-Git-Url: http://git.jankratochvil.net/?p=macros.git;a=blobdiff_plain;f=AutoGen.pm;h=861177e55cdec3f7eda9488bc6225bbab8c62ae2;hp=652ac7b1327096f8e35550fab4c33d623080d88b;hb=ef81a1671c3e99f2fc651d3fc3a58cd437fd0eae;hpb=651a872089fa28a165785aa197afe695a487a175 diff --git a/AutoGen.pm b/AutoGen.pm index 652ac7b..861177e 100644 --- a/AutoGen.pm +++ b/AutoGen.pm @@ -296,6 +296,7 @@ my($class,%args)=@_; @subdirs=glob $glob; confess "Invalid glob $glob: ".join(",",@subdirs) if 1!=@subdirs; } + $base||=$subdirs[0]; rename $subdirs[0],$base or confess "$!"; _system(join(" ","cd ".$base.";dpkg-buildpackage", "-rfakeroot", @@ -334,6 +335,7 @@ sub _cleanfiles .deps .libs *.[oa] *.l[oa] *.l[oa]T .cvsignore + pod2htm[di].tmp ./errs* ./intl @@ -399,7 +401,7 @@ sub _cleanfiles sub _cleanfilesfordir { -my($dir)=@_; +my($dir,@cleanfiles)=@_; return map({ if (m#^\Q$dir\E/([^/]+)$#) { # this-dir: "./this-dir/file-name.c" @@ -417,7 +419,7 @@ my($dir)=@_; else { (); } - } _cleanfiles()); + } @cleanfiles); } sub _cvsdirs @@ -490,13 +492,12 @@ my($class,%options)=@_; "rpmtest" ,sub { $class->_rpmbuild("sign"=>0); }, "deb" ,sub { $class->_debbuild("sign"=>1); }, "debtest" ,sub { $class->_debbuild("sign"=>0); }, - "cleanfilesfordir=s",sub { print "$_\n" for (_cleanfilesfordir $_[1]); exit 0; }, + "cleanfilesfordir=s",sub { print "$_\n" for (_cleanfilesfordir($_[1],_cleanfiles())); exit 0; }, "dist" ,\$Options{"ARGV_dist"}, "copy!" ,\$Options{"ARGV_copy"}, "clean" ,\$Options{"ARGV_clean"}, "fullclean",\$Options{"ARGV_fullclean"}, "h|help" ,sub { print _help(); exit 0; }, - $Options{"GetOptions_args"}, ) || @ARGV; for my $subdir (map((!$_ ? () : @$_),$Options{"subdirs"})) { @@ -505,7 +506,7 @@ my($class,%options)=@_; } for my $dir (_cvsdirs(".")) { - my @cleanfilesfordir=_cleanfilesfordir $dir; + my @cleanfilesfordir=_cleanfilesfordir $dir,_cleanfiles(); _writefile $dir."/.cvsignore",map("$_\n",@cleanfilesfordir) if !$Options{"ARGV_fullclean"}; _remove "nocheck",\1,map({ _expandclass("$dir/$_"); } grep({ $Options{"ARGV_fullclean"} or $_ ne ".cvsignore"; @@ -585,9 +586,29 @@ my($class,%options)=@_; # "ChangeLog" is reqd by automake(1) # Don't remove it afterwards as it may still be needed during automatic automake Makefile rebuilds File::Touch->new("atime_only"=>1)->touch("ChangeLog") if !$Options{"ChangeLog"}; - _system qw(automake --add-missing),@copy_arg; + _system qw(automake --add-missing -Wno-portability),@copy_arg; _system qw(autoconf); - _writefile "| patch configure",<<'CONFIGURE_SUBST_X_EOF'; + for my $patch ( + <<'CONFIGURE_SUBST_X_EOF', +--- configure-orig 2007-03-27 01:13:44.000000000 +0200 ++++ configure 2007-03-27 01:17:07.000000000 +0200 +@@ -3749,7 +3749,13 @@ + rm -f "$tmp/stdin" + case $ac_file in + -) cat "$tmp/out"; rm -f "$tmp/out";; +- *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; ++ *) rm -f "$ac_file"; mv "$tmp/out" $ac_file ++ for f in $ac_file_inputs; do ++ if test -x $f; then ++ chmod +x $ac_file ++ fi ++ done ++ ;; + esac + ;; + +CONFIGURE_SUBST_X_EOF + <<'CONFIGURE_SUBST_X_EOF', --- configure-orig Wed Aug 20 12:10:37 2003 +++ configure Wed Aug 20 13:22:51 2003 @@ -21590,6 +21590,11 @@ @@ -603,6 +624,15 @@ my($class,%options)=@_; cat $tmp/out rm -f $tmp/out CONFIGURE_SUBST_X_EOF + undef(), + ) { + confess if !$patch; + last if eval { + _writefile "| patch configure",$patch; + 1; + }; + _remove "nocheck","./configure.rej"; + } _remove "nocheck","./configure.orig"; # It is usually produced by 'CONFIGURE_SUBST_X'. # Why it is left there after RedHat autoconf-2.53-8 ? _remove "nocheck",\1,"autom4te-*.cache"; @@ -645,20 +675,12 @@ B(1) and similiar tools. This project has some additional features: =over -=item - Clean the checkout directory without Bs for 'make clean'. -=item - Maintain B<.cvsignore> files containing the files being cleaned. -=item - Single-command package building of B<.rpm>/B<.deb> out of CVS checkout. -=item - Supports: B, B, B, B, B. =back @@ -756,9 +778,7 @@ B or B variables of Bs. There are several formats of B field possible entries: -=over - -=item B<./path/to/file.c> +=item B entry: B<./path/to/file.c> Full project-basedir relative path to the deleted file. Rule applies only to the one specified directory. Although B would be also possible @@ -766,18 +786,16 @@ it is not recommended to have unified format with B<./only_basedir.c> entries to delete file just in the root directory (as B would delete it in ALL subdirectories incl. the root one). -=item B +=item B entry: B Delete B found in any subdirectory of the project. It has the same effect as B<./*/basename_generated.c> entry. -=item B<./subdir/*/name.c> +=item B entry: B<./subdir/*/name.c> Delete B in B<./subdir> and all of its subdirector descendants. Entry B would have the same effect. -=back - =item B @@ -824,7 +842,7 @@ This section applies to projects where you patch foreign existing packages. =over -=item +=item Prolog Use the following alternate B prolog if your branch does not belong to the B
CVS branch: @@ -837,12 +855,12 @@ to the B
CVS branch: use lib "./macros/"; use AutoGen; -=item +=item Original archive Put B archive to the project root directory as B. -=item +=item Versioning Set B<$VERSION> in B file with you vendor prefix such as B<1.2.3joe1>. Set B<$VERSION_BASE> to B<1.2.3> and B<$VERSION_EXT> to B. @@ -850,55 +868,31 @@ B() them both. =item B<.spec> file changes -=over - -=item - Change B to B. -=item - Change (expected) line B to B. -=item - Change B to B. -=item - Add line B. This patch file name is not mandatory. -=item - Remember to call B commands manually in the B<%build> section if their source files were modified in your vendor branch. -=back - =item B-specific changes -=over - -=item - Include both B and B to B. -=item - Include B to B field in B. -=item - Use B<@VERSION@> in B. Package will be built as Debian-native package (no I<.diff> file) as the patches are not just for Debian packages, it is a new package (read: dpkg does not support branch patches). =back -=back - =head1 AUTHOR Jan Kratochvil >, - I +I