|
Lines 153-158
my %com2pl = (
Link Here
|
| 153 |
zstd => "zstdio", |
153 |
zstd => "zstdio", |
| 154 |
); |
154 |
); |
| 155 |
|
155 |
|
|
|
156 |
my %sense2tag = ( |
| 157 |
0x10000 => 'triggerin', |
| 158 |
0x20000 => 'triggerun', |
| 159 |
0x40000 => 'triggerpostun', |
| 160 |
); |
| 161 |
|
| 156 |
# tags which are printed verbatim in the specfile |
162 |
# tags which are printed verbatim in the specfile |
| 157 |
my @simple_tags = qw(epoch version release license group summary packager vendor |
163 |
my @simple_tags = qw(epoch version release license group summary packager vendor |
| 158 |
url distribution); |
164 |
url distribution); |
|
Lines 224-229
sub load_package {
Link Here
|
| 224 |
script => $triggerscripts[$i], |
230 |
script => $triggerscripts[$i], |
| 225 |
}); |
231 |
}); |
| 226 |
} |
232 |
} |
|
|
233 |
|
| 234 |
my @filetriggerprogs = query_array($rpm, qw(filetriggerscriptprog filetriggerscriptflags filetriggerpriorities)); |
| 235 |
my @filetriggerscripts = query_multiline_array($rpm, "filetriggerscripts"); |
| 236 |
my @filetriggers = query_array($rpm, qw(filetriggerindex filetriggername filetriggerversion filetriggerflags)); |
| 237 |
if (scalar(@filetriggerprogs) != scalar(@filetriggerscripts)) { |
| 238 |
die "# of %%{filetriggerscriptprog} tags (" . scalar(@filetriggerprogs) . |
| 239 |
") != # of %%{filetriggerscripts} tags (" . scalar(@filetriggerscripts) |
| 240 |
. ")"; |
| 241 |
} |
| 242 |
my @filetriggeridx; |
| 243 |
for (my $i = 0; $i < scalar(@filetriggers); $i++) { |
| 244 |
push @{$filetriggeridx[$filetriggers[$i]->[0]]}, $i; |
| 245 |
} |
| 246 |
for (my $i = 0; $i < scalar(@filetriggerprogs); $i++) { |
| 247 |
my @idx = @{$filetriggeridx[$i] || []}; |
| 248 |
$res{filetriggers} ||= []; |
| 249 |
push(@{$res{filetriggers}}, { |
| 250 |
name => [ map {$filetriggers[$_]->[1]} @idx ], |
| 251 |
interp => $filetriggerprogs[$i]->[0], |
| 252 |
scriptflags => $filetriggerprogs[$i]->[1], |
| 253 |
version => [ map {$filetriggers[$_]->[2]} @idx ], |
| 254 |
sense => [ map {$filetriggers[$_]->[3]} @idx ], |
| 255 |
priority => $filetriggerprogs[$i]->[2], |
| 256 |
script => $filetriggerscripts[$i], |
| 257 |
}); |
| 258 |
} |
| 259 |
|
| 260 |
my @transfiletriggerprogs = query_array($rpm, qw(transfiletriggerscriptprog transfiletriggerscriptflags transfiletriggerpriorities)); |
| 261 |
my @transfiletriggerscripts = query_multiline_array($rpm, "transfiletriggerscripts"); |
| 262 |
my @transfiletriggers = query_array($rpm, qw(transfiletriggerindex transfiletriggername transfiletriggerversion transfiletriggerflags)); |
| 263 |
if (scalar(@transfiletriggerprogs) != scalar(@transfiletriggerscripts)) { |
| 264 |
die "# of %%{transfiletriggerscriptprog} tags (" . scalar(@transfiletriggerprogs) . |
| 265 |
") != # of %%{transfiletriggerscripts} tags (" . scalar(@transfiletriggerscripts) |
| 266 |
. ")"; |
| 267 |
} |
| 268 |
my @transfiletriggeridx; |
| 269 |
for (my $i = 0; $i < scalar(@transfiletriggers); $i++) { |
| 270 |
push @{$transfiletriggeridx[$transfiletriggers[$i]->[0]]}, $i; |
| 271 |
} |
| 272 |
for (my $i = 0; $i < scalar(@transfiletriggerprogs); $i++) { |
| 273 |
my @idx = @{$transfiletriggeridx[$i] || []}; |
| 274 |
$res{transfiletriggers} ||= []; |
| 275 |
push(@{$res{transfiletriggers}}, { |
| 276 |
name => [ map {$transfiletriggers[$_]->[1]} @idx ], |
| 277 |
interp => $transfiletriggerprogs[$i]->[0], |
| 278 |
scriptflags => $transfiletriggerprogs[$i]->[1], |
| 279 |
version => [ map {$transfiletriggers[$_]->[2]} @idx ], |
| 280 |
sense => [ map {$transfiletriggers[$_]->[3]} @idx ], |
| 281 |
priority => $transfiletriggerprogs[$i]->[2], |
| 282 |
script => $transfiletriggerscripts[$i], |
| 283 |
}); |
| 284 |
} |
| 227 |
open(my $fh, '-|', "rpm", "-qp", "--changelog", $rpm) or die "rpm: $!\n"; |
285 |
open(my $fh, '-|', "rpm", "-qp", "--changelog", $rpm) or die "rpm: $!\n"; |
| 228 |
{ |
286 |
{ |
| 229 |
local $/ = undef; |
287 |
local $/ = undef; |
|
Lines 309-314
sub print_package {
Link Here
|
| 309 |
print SPEC " -- $trigger->{conds}\n"; |
367 |
print SPEC " -- $trigger->{conds}\n"; |
| 310 |
$i++; |
368 |
$i++; |
| 311 |
} |
369 |
} |
|
|
370 |
for my $trigger (@{$p->{filetriggers}}) { |
| 371 |
my $sense = $trigger->{'sense'}->[0]; |
| 372 |
die("unsupported sense $sense\n") unless $sense2tag{$sense}; |
| 373 |
print SPEC "\%filetrigger$sense2tag{$sense}"; |
| 374 |
print SPEC " -P $trigger->{'priority'}" if $trigger->{'priority'} && $trigger->{'priority'} ne '(none)'; |
| 375 |
print SPEC " -p $trigger->{interp} -n $p->{name}"; |
| 376 |
print_script("trigger$i-$p->{name}", $trigger); |
| 377 |
print SPEC " -- ".join(' ', @{$trigger->{'name'}})."\n"; |
| 378 |
$i++; |
| 379 |
} |
| 380 |
for my $trigger (@{$p->{transfiletriggers}}) { |
| 381 |
my $sense = $trigger->{'sense'}->[0]; |
| 382 |
die("unsupported sense $sense\n") unless $sense2tag{$sense}; |
| 383 |
print SPEC "\%transfiletrigger$sense2tag{$sense}"; |
| 384 |
print SPEC " -P $trigger->{'priority'}" if $trigger->{'priority'} && $trigger->{'priority'} ne '(none)'; |
| 385 |
print SPEC " -p $trigger->{interp} -n $p->{name}"; |
| 386 |
print_script("trigger$i-$p->{name}", $trigger); |
| 387 |
print SPEC " -- ".join(' ', @{$trigger->{'name'}})."\n"; |
| 388 |
$i++; |
| 389 |
} |
| 312 |
if ($p->{files}) { |
390 |
if ($p->{files}) { |
| 313 |
print SPEC "\%files -n $p->{name}\n"; |
391 |
print SPEC "\%files -n $p->{name}\n"; |
| 314 |
print_files($p->{files}); |
392 |
print_files($p->{files}); |