Changeset 1177 in ProjectBuilder for devel/rpmbootstrap
- Timestamp:
- Feb 7, 2011, 2:24:17 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
devel/rpmbootstrap/bin/rpmbootstrap
r1128 r1177 164 164 165 165 GetOptions("help|?|h" => \$opts{'h'}, 166 167 168 169 170 171 172 173 174 175 176 166 "man|m" => \$opts{'man'}, 167 "verbose|v+" => \$opts{'v'}, 168 "quiet|q" => \$opts{'q'}, 169 "log-files|l=s" => \$opts{'l'}, 170 "script|s=s" => \$opts{'s'}, 171 "print-rpms|p" => \$opts{'p'}, 172 "download-only|d" => \$opts{'d'}, 173 "keep|k" => \$opts{'k'}, 174 "iso|i=s" => \$opts{'i'}, 175 "add|a=s" => \$opts{'a'}, 176 "version|V=s" => \$opts{'V'}, 177 177 ) || pb_syntax(-1,0); 178 178 … … 193 193 $pbLOG = \*pbLOG; 194 194 $pbdebug = 0 if ($pbdebug == -1); 195 195 } 196 196 pb_log_init($pbdebug, $pbLOG); 197 197 #pb_display_init("text",""); … … 214 214 # 215 215 pb_log(0,"Starting VE build for $ENV{'PBV'}\n"); 216 my ($name,$ver,$darch) = split(/-/,$ENV{'PBV'}); 217 chomp($darch); 218 my ($ddir, $dver, $dfam, $dtype, $dos, $pbsuf, $pbupd, $pbins) = pb_distro_init($name,$ver,$darch); 216 my $pbos = pb_distro_get_context($ENV{'PBV'}); 219 217 220 218 # … … 233 231 if (not defined $vepath) { 234 232 my ($vestdpath) = pb_conf_get_if("vepath"); 235 $vepath = "$vestdpath->{'default'}/$ ddir/$dver/$darch";233 $vepath = "$vestdpath->{'default'}/$pbos->{'name'}/$pbos->{'version'}/$pbos->{'arch'}"; 236 234 } 237 235 … … 243 241 # Get the package list to download, store them in a cache directory 244 242 # 245 my ($rbsmindep,$rbsmirrorsrv) = pb_conf_get("rbsmindep","rbsmirrorsrv");246 243 my ($rbscachedir) = pb_conf_get_if("rbscachedir"); 247 my $pkgs = pb_distro_get_param($ddir,$dver,$darch,$rbsmindep); 248 my $mirror = pb_distro_get_param($ddir,$dver,$darch,$rbsmirrorsrv); 244 my ($pkgs,$mirror) = pb_distro_get_param($pbos->{'name'},$pbos->{'version'},$pbos->{'arch'},pb_conf_get("rbsmindep","rbsmirrorsrv")); 249 245 250 246 my $cachedir = "/var/cache/rpmbootstrap"; … … 252 248 253 249 # Point to the right subdir and create it if needed 254 $cachedir .= "/$ ddir-$dver-$darch";250 $cachedir .= "/$pbos->{'name'}-$pbos->{'version'}-$pbos->{'arch'}"; 255 251 pb_mkdir_p($cachedir) if (! -d $cachedir); 256 252 … … 266 262 if ($mirror =~ /i386/) { 267 263 # Some distro have an i586 or i686 mirror dir instead for i386 268 warn "Unable to download packages from $mirror for $ ddir-$dver-$darch.";264 warn "Unable to download packages from $mirror for $pbos->{'name'}-$pbos->{'version'}-$pbos->{'arch'}."; 269 265 $mirror =~ s|/i386/|/i586/|; 270 266 $response = $ua->get($mirror); 271 267 if (! $response->is_success) { 272 die "Unable to download packages from $mirror for $ ddir-$dver-$darch";268 die "Unable to download packages from $mirror for $pbos->{'name'}-$pbos->{'version'}-$pbos->{'arch'}"; 273 269 } 274 270 } … … 279 275 my $repo = $mirror; 280 276 my $found = 0; 281 if ($pb ins=~ /yum/) {277 if ($pbos->{'install'} =~ /yum/) { 282 278 my $response1; 283 279 while ($found == 0) { … … 290 286 my ($scheme, $account, $host, $port, $path) = pb_get_uri($repo); 291 287 die "Unable to find the repodata structure of the mirror $mirror\nPlease check the URL or warn the dev team.\n" if ($path =~ /^[\/]+$/); 292 288 293 289 # / not reached, so looping 294 290 next; … … 302 298 303 299 # Manages architectures specificities 304 my $parch = $ darch;305 $parch = "i[3456]86" if ($ darcheq "i386");300 my $parch = $pbos->{'arch'}; 301 $parch = "i[3456]86" if ($pbos->{'arch'} eq "i386"); 306 302 307 303 # Get the list of packages and their URL in this hash … … 331 327 my $osupdname = ""; 332 328 333 if ($pb ins=~ /yum/) {329 if ($pbos->{'install'} =~ /yum/) { 334 330 $oscachedir = "$vepath/var/cache/yum/core/packages/"; 335 331 $osupdcachedir = "$vepath/var/cache/yum/updates-released/packages/"; 336 332 $osupdname = "YUM"; 337 333 # Recent Fedora release use a new yum cache dir 338 if (($ ddir eq "fedora") && ($dver> 8)) {339 $oscachedir = "$vepath/var/cache/yum/$ darch/$dver/fedora/packages";340 $osupdcachedir = "$vepath/var/cache/yum/$ darch/$dver/updates/packages";334 if (($pbos->{'name'} eq "fedora") && ($pbos->{'version'} > 8)) { 335 $oscachedir = "$vepath/var/cache/yum/$pbos->{'arch'}/$pbos->{'version'}/fedora/packages"; 336 $osupdcachedir = "$vepath/var/cache/yum/$pbos->{'arch'}/$pbos->{'version'}/updates/packages"; 341 337 $osupdcachedir = "$vepath/var/cache/yum/updates-released/packages/"; 342 338 } 343 } elsif ($pb ins=~ /zypper/) {344 $oscachedir = "$vepath/var/cache/zypp/packages/opensuse/suse/$ darch";339 } elsif ($pbos->{'install'} =~ /zypper/) { 340 $oscachedir = "$vepath/var/cache/zypp/packages/opensuse/suse/$pbos->{'arch'}"; 345 341 $osupdname = "Zypper"; 346 } elsif ($pb ins=~ /urpmi/) {342 } elsif ($pbos->{'install'} =~ /urpmi/) { 347 343 $oscachedir = "$vepath/var/cache/urpmi/rpms"; 348 344 $osupdname = "URPMI"; … … 373 369 pb_log(1,"Package $p1 already in cache\n"); 374 370 } 375 371 376 372 # End if download only 377 373 if ($opts{'d'}) { 378 374 next; 379 375 } 380 376 381 377 # 382 378 # Copy the cached .RPM files into the oscachedir directory, so that os doesn't need to download them again. 383 379 # 384 380 pb_log(1,"Link package into $oscachedir\n"); 385 386 381 copy("$cachedir/$p1",$oscachedir) if (defined $oscachedir); 382 symlink("$oscachedir/$p1","$osupdcachedir/p1") if (defined $osupdcachedir); 387 383 388 384 # And extract it to the finale dir 389 385 pb_system("cd $vepath ; rpm2cpio $cachedir/$p1 | cpio -ivdum","Extracting package $p1 into $vepath"); 390 386 391 387 # Remove cached package if not asked to keep 392 388 if (! $opts{'k'}) { 393 389 unlink("$cachedir/$p1"); 394 390 } 395 391 396 392 } 397 393 } else { … … 403 399 404 400 if ($warning ge 1) { 405 pb_log(0,"$warning WARNINGS found.\nMaybe you should review your package list for $ddir-$dver-$darch\nand remove$lwpkg\n");401 pb_log(0,"$warning WARNINGS found.\nMaybe you should review your package list for $pbos->{'name'}-$pbos->{'version'}-$pbos->{'arch'}\nand remove$lwpkg\n"); 406 402 } 407 403 … … 415 411 416 412 # yum needs that distro-release package be installed, so force it 417 if ($pbins =~ /yum/) { 413 if ($pbos->{'install'} =~ /yum/) { 414 my $ddir = $pbos->{'name'}; 418 415 foreach my $p1 (<$cachedir/($ddir|redhat)-release-*.rpm>) { 419 416 copy("$cachedir/$p1","$vepath/tmp"); … … 432 429 # BUGFIX: 433 430 # 434 if ((($ ddir eq "centos") || ($ddir eq "rhel")) && ($dvereq "5")) {431 if ((($pbos->{'name'} eq "centos") || ($pbos->{'name'} eq "rhel")) && ($pbos->{'version'} eq "5")) { 435 432 pb_log(1,"BUGFIX for centos-5\n"); 436 433 pb_mkdir_p("$vepath/usr/lib/python2.4/site-packages/urlgrabber.skx"); … … 458 455 459 456 pb_log(1,"Adapting $osupdname repository entries\n"); 460 if ($pb ins=~ /yum/) {457 if ($pbos->{'install'} =~ /yum/) { 461 458 # 462 459 # Force the architecture for yum … … 468 465 # yum.conf as well 469 466 foreach my $i (<$vepath/etc/yum.repos.d/*>,"$vepath/etc/yum.conf") { 470 pb_system("sed -i -e 's/\$basearch/$ darch/g' $i","","quiet");471 pb_system("sed -i -e 's/\$releasever/$ dver/g' $i","","quiet");467 pb_system("sed -i -e 's/\$basearch/$pbos->{'arch'}/g' $i","","quiet"); 468 pb_system("sed -i -e 's/\$releasever/$pbos->{'version'}/g' $i","","quiet"); 472 469 pb_system("sed -i -e 's/^mirrorlist/#mirrorlist/' $i","","quiet"); 473 470 # rather use neutral separators here … … 475 472 } 476 473 $minipkglist = "ldconfig yum passwd vim-minimal dhclient authconfig"; 477 } elsif ($pb ins=~ /zypper/) {474 } elsif ($pbos->{'install'} =~ /zypper/) { 478 475 pb_mkdir_p("$vepath/etc/zypp/repos.d"); 479 open(REPO,"> $vepath/etc/zypp/repos.d/$ ddir-$dver") || die "Unable to create repo file";476 open(REPO,"> $vepath/etc/zypp/repos.d/$pbos->{'name'}-$pbos->{'version'}") || die "Unable to create repo file"; 480 477 my $baseurl = dirname(dirname($mirror)); 481 478 # Setup the repo 482 479 print REPO << 'EOF'; 483 480 [opensuse] 484 name=$ ddir-$dver481 name=$pbos->{'name'}-$pbos->{'version'} 485 482 baseurl=$baseurl 486 483 enabled=1 … … 491 488 $minipkglist = "zypper vim-minimal dhclient"; 492 489 # Bootstraping zypper 493 if ($ dvereq "10.2") {494 pb_system("chroot $vepath /bin/bash -c \"yes | /usr/bin/zypper sa $baseurl $ ddir-$dver\"","Bootstrapping Zypper");495 } 496 } elsif ($pb ins=~ /urpmi/) {490 if ($pbos->{'version'} eq "10.2") { 491 pb_system("chroot $vepath /bin/bash -c \"yes | /usr/bin/zypper sa $baseurl $pbos->{'name'}-$pbos->{'version'}\"","Bootstrapping Zypper"); 492 } 493 } elsif ($pbos->{'install'} =~ /urpmi/) { 497 494 # Setup the repo 498 495 my $baseurl = dirname(dirname(dirname($mirror))); … … 505 502 # No need for sudo here 506 503 # 507 $pb ins=~ s/sudo//g;508 pb_system("chroot $vepath /bin/bash -c \"$pb ins $minipkglist \"","Bootstrapping OS by running $pbins$minipkglist");504 $pbos->{'install'} =~ s/sudo//g; 505 pb_system("chroot $vepath /bin/bash -c \"$pbos->{'install'} $minipkglist \"","Bootstrapping OS by running $pbos->{'install'} $minipkglist"); 509 506 510 507 # … … 517 514 if (defined $opts{'a'}) { 518 515 $opts{'a'} =~ s/,/ /g; 519 pb_system("chroot $vepath /bin/bash -c \"$pb ins $opts{'a'} \"","Adding packages to OS by running $pbins$opts{'a'}");516 pb_system("chroot $vepath /bin/bash -c \"$pbos->{'install'} $opts{'a'} \"","Adding packages to OS by running $pbos->{'install'} $opts{'a'}"); 520 517 } 521 518 … … 524 521 # 525 522 pb_log(1,"Cleaning up\n"); 526 if ($pb ins=~ /yum/) {523 if ($pbos->{'install'} =~ /yum/) { 527 524 pb_system("chroot $vepath /usr/bin/yum clean all","Cleaning yum"); 528 525 }
Note:
See TracChangeset
for help on using the changeset viewer.