93 lines
4.2 KiB
Diff
93 lines
4.2 KiB
Diff
diff -urN a/debbuild b/debbuild
|
|
--- a/debbuild 2022-02-21 18:16:40.744711483 +0300
|
|
+++ b/debbuild 2022-02-21 18:36:10.249542683 +0300
|
|
@@ -193,6 +193,10 @@
|
|
}
|
|
|
|
if ($cmdopts{type} eq 'b') {
|
|
+ # Make a copy of spec lowercased and `_` replaced with `-` to do some magic
|
|
+ (my $spec_lc = lc(basename($specglobals{specfile}))) =~ tr/_/-/;
|
|
+ $spec_lc = dirname($specglobals{specfile})."/".$spec_lc;
|
|
+ qx ( $specglobals{__cp} -a $specglobals{specfile} $spec_lc ) if ( $specglobals{specfile} ne $spec_lc );
|
|
# Need to read the spec file to find the tarball. Note that
|
|
# this also generates most of the shell script required.
|
|
parse_spec($specglobals{specfile});
|
|
@@ -306,18 +310,36 @@
|
|
sub load_config {
|
|
# Load user configuration, permitting local override
|
|
my $homedir = $ENV{HOME} // $ENV{LOGDIR} // (getpwuid($<))[7];
|
|
- foreach my $macros ( ("$static_config{debconfigdir}/macros",
|
|
- glob("$static_config{debconfigdir}/macros.d/macros.*"),
|
|
- "$static_config{sysconfdir}/debbuild/macros",
|
|
- glob("$static_config{sysconfdir}/debbuild/macros.*"),
|
|
- "$homedir/.debmacros") ) {
|
|
+ vdebug("Loading ...", 3, "load_config");
|
|
+ my @cfgs = ("$static_config{debconfigdir}/macros",
|
|
+ glob("$static_config{debconfigdir}/macros.d/macros.*"),
|
|
+ "$static_config{sysconfdir}/rpm/macros",
|
|
+ glob("$static_config{sysconfdir}/rpm/macros.*"),
|
|
+ "$static_config{sysconfdir}/debbuild/macros",
|
|
+ glob("$static_config{sysconfdir}/debbuild/macros.*"),
|
|
+ "$homedir/.rpmmacros",
|
|
+ "$homedir/.debmacros");
|
|
+ my %cfl = ();
|
|
+ my %ercd = ();
|
|
+ while ( my $macros = shift @cfgs ) {
|
|
+ next if $cfl{$macros} and not ( $macros eq "$homedir/.debmacros" or $macros eq "$homedir/.rpmmacros" );
|
|
open my $MACROS,$macros or next; # should we warn about missing macro files?
|
|
+ vdebug("Loading $macros ...", 3, "load_config");
|
|
while (<$MACROS>) {
|
|
next unless my ($macro,$eq,$value) = /^%(\w+(?:\([^)]*\))?)(=|\s*)(.+)$/s;
|
|
$value = read_multiline_macro($value, $MACROS);
|
|
chomp($value);
|
|
+ vdebug("($macros): $macro = $value", 5, "load_config");
|
|
store_value('define', $macro, $eq eq '=' ? $specglobals{$value} : $value);
|
|
+ if ( $macro eq '_rpmconfigdir' and not $ercd{$macros} ) {
|
|
+ $ercd{$macros} = 1;
|
|
+ unshift @cfgs, expandmacros($value)."/macros",
|
|
+ glob(expandmacros($value)."/macros.d/macros.*");
|
|
+ push @cfgs, "$homedir/.rpmmacros", "$homedir/.debmacros"
|
|
+ if $macros eq "$homedir/.debmacros" or $macros eq "$homedir/.rpmmacros";
|
|
+ }
|
|
}
|
|
+ $cfl{$macros} = 1;
|
|
close $MACROS;
|
|
}
|
|
} # end load_config()
|
|
@@ -1603,6 +1625,7 @@
|
|
qx($specglobals{__du} -s --apparent-size $specglobals{buildroot}/$pkg) =~
|
|
/(\d+)/;
|
|
|
|
+ my $maintainer = defined $pkgdata{main}{packager} ? $pkgdata{main}{packager} : expandmacros('%{_deb_maintainer}');
|
|
my $control = "Package: $pkgdata{$pkg}{name}\n".
|
|
'Version: '.format_version($pkg)."\n".
|
|
( defined $pkgdata{$pkg}{group} ?
|
|
@@ -1610,8 +1633,8 @@
|
|
"Priority: optional\n".
|
|
"Architecture: $pkgdata{$pkg}{arch}\n".
|
|
"Installed-Size: $installedsize\n".
|
|
- ( defined $pkgdata{main}{packager} ?
|
|
- "Maintainer: $pkgdata{main}{packager}\n" : '' ).
|
|
+ ( $maintainer ?
|
|
+ "Maintainer: $maintainer\n" : '' ).
|
|
"Description: $pkgdata{$pkg}{summary}\n$pkgdata{$pkg}{description}\n".
|
|
( defined $pkgdata{main}{url} ?
|
|
"Homepage: $pkgdata{main}{url}\n" : '' );
|
|
@@ -1764,6 +1787,16 @@
|
|
|
|
$pkg = unify_pkg_name($pkg);
|
|
|
|
+ # Fix strict version checking by including release and epoch in case of specifying the packages currently building
|
|
+ if ( $rel eq '=' ) {
|
|
+ foreach my $p ( keys(%pkgdata) ) {
|
|
+ if ( $ver eq $pkgdata{main}{version} ) {
|
|
+ $ver = (defined $pkgdata{main}{epoch} ? "$pkgdata{main}{epoch}:" : '').$ver."-".$pkgdata{main}{release};
|
|
+ last;
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+
|
|
return ($pkg,$rel,$ver);
|
|
} # end splitver()
|
|
|