Changeset 27
- Timestamp:
- 12/09/05 18:13:00 (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/debbuild
r26 r27 94 94 # 10/31/2005 Maybe this should be flatter? -kgd 95 95 my %pkgdata; 96 my @pkglist = ('main'); #sigh 96 97 # Files listing. Embedding this in %pkgdata would be, um, messy. 97 98 my %filelist; … … 141 142 } 142 143 # -> install if -.[ilabs] 143 if ($cmdopts{stage} =~ /[ilabs]/) { 144 if ($cmdopts{stage} eq 'i' || ($cmdopts{stage} =~ /[labs]/ && $cmdopts{short} ne 'y')) { 145 #if ($cmdopts{stage} =~ /[ilabs]/) { 144 146 install(); 145 147 } … … 257 259 if ($cmdopts{short} eq 'y' && $cmdopts{stage} =~ /[labs]/) { 258 260 warn "Can't use --short-circuit for $targets{$cmdopts{stage}} stage. Ignoring.\n"; 259 $cmdopts{short} = 'n'; 261 ##temp Allow short-circuit on full builds so we can experiment 262 # with apache pkg without spending hours recompiling repeatedly 263 # $cmdopts{short} = 'n'; 260 264 } 261 265 … … 312 316 } 313 317 314 if (/^\%description/) { 315 $pkgdata{main}{desc} .= $_; 318 if (/^\%description(?:\s+(?:-n\s+)?([a-zA-Z0-9_.-]+))?/) { 319 my $subname = "main"; 320 if ($1) { 321 if (/-n/) { $subname = $1; } else { $subname = "$pkgdata{main}{name}-$1"; } 322 } 316 323 while (<SPECFILE>) { 317 324 redo LINE if /^\%/; 318 $pkgdata{ main}{desc} .= " $_";325 $pkgdata{$subname}{desc} .= " $_"; 319 326 } 327 } 328 if (/^\%package\s+(?:-n\s+)?([a-zA-Z0-9_.-]+)/) { 329 my $subname; 330 if (/-n/) { $subname = $1; } else { $subname = "$pkgdata{main}{name}-$1"; } 331 push @pkglist, $subname; 332 $pkgdata{$subname}{name} = $subname; 333 $pkgdata{$subname}{version} = $pkgdata{main}{version}; 334 while (<SPECFILE>) { 335 redo LINE if /^\%/; 336 if (my ($dname,$dvalue) = (/^(Summary|Group|Version):\s+(.+)$/i)) { 337 $dname =~ tr/[A-Z]/[a-z]/; 338 $pkgdata{$subname}{$dname} = $dvalue; 339 } 340 } 320 341 } 321 342 … … 427 448 if ($1) { 428 449 if (/-n/) { $pkgname = $1; } else { $pkgname = "$pkgdata{main}{name}-$1"; } 429 # subpackage not based on "main" package 430 while (<SPECFILE>) { 431 # need to update this to deal with %dir, %attr, etc 432 redo LINE if /^\%/; 433 $filelist{$pkgname} .= $_; 434 } 450 } 451 # subpackage not based on "main" package 452 #print "$pkgname\n"; 453 while (<SPECFILE>) { 454 # need to update this to deal with %dir, %attr, etc 455 redo LINE if /^\%/; 456 chomp; 457 #print; print "\n"; 458 $filelist{$pkgname} .= " $_"; 459 #print $pkgdata{$pkgname}{files}; print "\n"; 435 460 } 436 461 # do we replace \n's with \s in $filelist{$pkgname}? … … 584 609 # Writes and executes a shell script to do so. 585 610 # Creates miscellaneous files required by dpkg-deb to actually build the package file. 611 # Should handle simple subpackages 586 612 sub binpackage { 587 613 # Make sure we have somewhere to write the .deb file … … 591 617 } 592 618 593 # Gotta do this first, otherwise the control file has nowhere to go. >:( 594 mkdir "$buildroot/DEBIAN"; 595 596 # create script filename 597 my $debscriptfile = "$tmpdir/deb-tmp.pkg.".int(rand(99998)+1); 598 sysopen(DEBSCRIPT, $debscriptfile, O_RDWR | O_CREAT | O_EXCL | O_NOFOLLOW) 619 print "\n\nmoving files for subpackages...\n"; 620 ##work 621 foreach my $pkg (@pkglist) { 622 #next if $pkg eq 'sources'; 623 print "got here, trying to move files for $pkg...\n"; 624 625 # Gotta do this first, otherwise we don't have a place to move files from %files 626 mkdir "$buildroot/$pkg"; 627 my @pkgfilelist = split ' ', $filelist{$pkg}; 628 foreach my $pkgfile (@pkgfilelist) { 629 #print "finding path for $pkgfile\n"; 630 my @filepath = ($pkgfile =~ /(.+)\/([a-zA-Z0-9_\.\+\-]+)$/); 631 qx { mkdir -p $buildroot/$pkg$filepath[0] } 632 if $filepath[0] ne ''; 633 #print "mkdir -p $buildroot/$pkg$filepath[0]\n"; 634 #print "$filepath[0]\n"; 635 qx { mv $buildroot$pkgfile $buildroot/$pkg$filepath[0] }; 636 #print "mv $buildroot$pkgfile $buildroot/$pkg$filepath[0]\n"; 637 } 638 #exit 0; 639 # Gotta do this next, otherwise the control file has nowhere to go. >:( 640 mkdir "$buildroot/$pkg/DEBIAN"; 641 642 # create script filename 643 my $debscriptfile = "$tmpdir/deb-tmp.pkg.".int(rand(99998)+1); 644 sysopen(DEBSCRIPT, $debscriptfile, O_RDWR | O_CREAT | O_EXCL | O_NOFOLLOW) 599 645 or die $!; 600 print DEBSCRIPT $scriptletbase; 601 print DEBSCRIPT "fakeroot dpkg-deb -b $buildroot $topdir/DEBS/i386/". 602 "$pkgdata{main}{name}_$pkgdata{main}{version}-$pkgdata{main}{release}_i386.deb\n"; 603 # %$&$%@#@@#%@@@ Debian and their horrible ugly package names. >:( 604 close DEBSCRIPT; 605 606 my $control = "Package: $pkgdata{main}{name}\n". 607 "Version: $pkgdata{main}{version}-$pkgdata{main}{release}\n". 608 "Section: unknown\n". 646 print DEBSCRIPT $scriptletbase; 647 print DEBSCRIPT "fakeroot dpkg-deb -b $buildroot/$pkg $topdir/DEBS/i386/". 648 "$pkgdata{$pkg}{name}_$pkgdata{$pkg}{version}-$pkgdata{main}{release}_i386.deb\n"; 649 # %$&$%@#@@#%@@@ Debian and their horrible ugly package names. >:( 650 close DEBSCRIPT; 651 652 #my $control; 653 #eval { 654 my $control = "Package: $pkgdata{$pkg}{name}\n". 655 "Version: $pkgdata{$pkg}{version}-$pkgdata{main}{release}\n". 656 "Section: $pkgdata{$pkg}{group}\n". 609 657 "Priority: optional\n". 610 658 "Architecture: i386\n". 611 659 "Maintainer: $pkgdata{main}{packager}\n". 612 "Description: $pkgdata{main}{desc}\n"; 613 614 open CONTROL, ">$buildroot/DEBIAN/control"; 615 print CONTROL $control; 616 close CONTROL; 617 618 if ($preinstscript ne '') { 619 open PREINST, ">$buildroot/DEBIAN/preinst"; 620 print PREINST "#!/bin/sh\nset -e\n\n"; 621 print PREINST $preinstscript; 622 close PREINST; 623 `chmod 0755 $buildroot/DEBIAN/preinst`; 624 } 625 if ($postinstscript ne '') { 626 open POSTINST, ">$buildroot/DEBIAN/postinst"; 627 print POSTINST "#!/bin/sh\nset -e\n\n"; 628 print POSTINST $postinstscript; 629 close POSTINST; 630 `chmod 0755 $buildroot/DEBIAN/postinst`; 631 } 632 if ($preuninstscript ne '') { 633 open PREUNINST, ">$buildroot/DEBIAN/prerm"; 634 print PREUNINST "#!/bin/sh\nset -e\n\n"; 635 print PREUNINST $preuninstscript; 636 close PREUNINST; 637 `chmod 0755 $buildroot/DEBIAN/prerm`; 638 } 639 if ($postuninstscript ne '') { 640 open POSTUNINST, ">$buildroot/DEBIAN/postrm"; 641 print POSTUNINST "#!/bin/sh\nset -e\n\n"; 642 print POSTUNINST $postuninstscript; 643 close POSTUNINST; 644 `chmod 0755 $buildroot/DEBIAN/postrm`; 645 } 646 647 print `ls -l $buildroot/DEBIAN`; 660 "Description: $pkgdata{$pkg}{summary}\n"; 661 $control .= "$pkgdata{$pkg}{desc}\n"; 662 #}; 663 #die "control: $control\n\n $@ \n" if $@; 664 665 open CONTROL, ">$buildroot/$pkg/DEBIAN/control"; 666 print CONTROL $control; 667 close CONTROL; 668 669 if ($preinstscript ne '') { 670 open PREINST, ">$buildroot/$pkg/DEBIAN/preinst"; 671 print PREINST "#!/bin/sh\nset -e\n\n"; 672 print PREINST $preinstscript; 673 close PREINST; 674 `chmod 0755 $buildroot/$pkg/DEBIAN/preinst`; 675 } 676 if ($postinstscript ne '') { 677 open POSTINST, ">$buildroot/$pkg/DEBIAN/postinst"; 678 print POSTINST "#!/bin/sh\nset -e\n\n"; 679 print POSTINST $postinstscript; 680 close POSTINST; 681 `chmod 0755 $buildroot/$pkg/DEBIAN/postinst`; 682 } 683 if ($preuninstscript ne '') { 684 open PREUNINST, ">$buildroot/$pkg/DEBIAN/prerm"; 685 print PREUNINST "#!/bin/sh\nset -e\n\n"; 686 print PREUNINST $preuninstscript; 687 close PREUNINST; 688 `chmod 0755 $buildroot/$pkg/DEBIAN/prerm`; 689 } 690 if ($postuninstscript ne '') { 691 open POSTUNINST, ">$buildroot/$pkg/DEBIAN/postrm"; 692 print POSTUNINST "#!/bin/sh\nset -e\n\n"; 693 print POSTUNINST $postuninstscript; 694 close POSTUNINST; 695 `chmod 0755 $buildroot/$pkg/DEBIAN/postrm`; 696 } 697 698 #print `ls -l $buildroot/DEBIAN`; 648 699 649 700 #Package: httpd … … 660 711 # http://home.samfundet.no/~sesse/mpm-itk/. 661 712 662 # execute663 print "Calling package creation script $debscriptfile for $pkgdata{main}{name}...\n";664 system("/bin/sh -e $debscriptfile") == 0713 # execute 714 print "Calling package creation script $debscriptfile for $pkgdata{$pkg}{name}...\n"; 715 system("/bin/sh -e $debscriptfile") == 0 665 716 or die "Can't exec: $!\n"; 666 717 667 # and clean up 668 unlink $debscriptfile; 718 # and clean up 719 unlink $debscriptfile; 720 721 } # subpackage loop 722 669 723 } # end binpackage() 670 724
Note:
See TracChangeset
for help on using the changeset viewer.