@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",
sub _cleanfilesfordir
{
-my($dir)=@_;
+my($dir,@cleanfiles)=@_;
return map({
if (m#^\Q$dir\E/([^/]+)$#) { # this-dir: "./this-dir/file-name.c"
else {
();
}
- } _cleanfiles());
+ } @cleanfiles);
}
sub _cvsdirs
"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"},
}
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";
=over
-=item
-
Clean the checkout directory without B<Makefile>s 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<gettext>, B<glib-gettext>, B<libtool>, B<autoconf>, B<automake>.
=back
There are several formats of B<clean> field possible entries:
-=over
-
-=item B<./path/to/file.c>
+=item B<clean> 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<path/to/file.c> would be also possible
to delete file just in the root directory (as B<only_basedir.c> would delete
it in ALL subdirectories incl. the root one).
-=item B<basename.c>
+=item B<clean> entry: B<basename.c>
Delete B<basename_generated.c> 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<clean> entry: B<./subdir/*/name.c>
Delete B<name.c> in B<./subdir> and all of its subdirector descendants.
Entry B<subdir/*/name.c> would have the same effect.
-=back
-
=item B<prep>
=over
-=item
+=item Prolog
Use the following alternate B<autogen.pl> prolog if your branch does not belong
to the B<MAIN> CVS branch:
use lib "./macros/";
use AutoGen;
-=item
+=item Original archive
Put B<fooproject-1.2.3.tar.gz> archive to the project root directory
as B<orig-fooproject-1.2.3.tar.gz>.
-=item
+=item Versioning
Set B<$VERSION> in B<configure.ac> 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<joe1>.
=item B<.spec> file changes
-=over
-
-=item
-
Change B<Version: @VERSION@> to B<Version: @VERSION_BASE@>.
-=item
-
Change (expected) line B<Release: 1> to B<Release: 1@VERSION_EXT@>.
-=item
-
Change B<Source: ...@VERSION@.tar.gz> to B<Source: ...@VERSION_BASE@.tar.gz>.
-=item
-
Add line B<Patch1: @PACKAGE@-@VERSION_BASE@-@VERSION_EXT@.patch>.
This patch file name is not mandatory.
-=item
-
Remember to call B<autotools> commands manually in the B<%build>
section if their source files were modified in your vendor branch.
-=back
-
=item B<debian>-specific changes
-=over
-
-=item
-
Include both B<debian/changelog.in> and B<debian/changelog> to B<Makefile.am>.
-=item
+Include B<debian/changelog> to B<clean> field in B<autogen.pl>.
-Use B<@VERSION_BASE@> in B<debian/changelog.in>.
-
-=back
+Use B<@VERSION@> in B<debian/changelog.in>. 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
=head1 AUTHOR
Jan Kratochvil <B<project-macros@jankratochvil.net>>,
- I<http://www.jankratochvil.net/>
+I<http://www.jankratochvil.net/>