View | Details | Raw Unified | Return to bug 1211849
Collapse All | Expand All

(-)a/pesign-gen-repackage-spec.orig (+78 lines)
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});

Return to bug 1211849