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

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

Return to bug 1211849