home *** CD-ROM | disk | FTP | other *** search
/ Caldera Network Desktop 1.0 / caldera-network-desktop-1.0.bin / images / rescue.img / usr / bin / rpm < prev   
Text File  |  1995-09-05  |  5KB  |  167 lines

  1. #!/usr/bin/perl
  2.  
  3. # RPM Package Management System
  4. # Copyright (C) 1995 Red Hat, Inc
  5. #
  6. # This program is free software; you can redistribute it and/or modify
  7. # it under the terms of the GNU General Public License as published by
  8. # the Free Software Foundation; either version 2 of the License, or
  9. # (at your option) any later version.
  10. # This program is distributed in the hope that it will be useful,
  11. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13. # GNU General Public License for more details.
  14. # You should have received a copy of the GNU General Public License
  15. # along with this program; if not, write to the Free Software
  16. # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  17.  
  18. # rpm - we can rebuild it
  19. #       we have the technology
  20. #       better, stronger, faster
  21.  
  22. # Copyright (C) 1995 - Red Hat Software
  23.  
  24. unshift(@INC, "/usr/lib/rhs/rpm");
  25.  
  26. require "rpmgetopts.pl";
  27. require "message.pl";
  28. require "misc.pl";
  29. require "opts.pl";
  30.  
  31. $DO_PREP       = 1;
  32. $DO_BUILD      = 2;
  33. $DO_INSTALL    = 4;
  34. $DO_SOURCE     = 8;
  35. $DO_BINARY     = 16;
  36. $DO_TEST       = 32;
  37. $DO_LIST_CHECK = 64;
  38. $DO_CLEAN      = 128;
  39.  
  40. $ENV{'PATH'} = $rpm{'PATH'};
  41. $ENV{'PWD'} = `pwd`;
  42.  
  43. sub sigint_handler {
  44.     &error("SIGINT received - aborted");
  45. }
  46. $SIG{"INT"} = 'sigint_handler';
  47.  
  48. &setmessagelevel(1);
  49. @args = ();
  50. $mode = 0;
  51.  
  52. $rpm{"options"} = join(' ', @ARGV);
  53. @rest = &rpm_getopts("ab:cdfhiUlpqsuyVFPv", @ARGV);
  54.  
  55. $bigmode = "none";
  56. $lopt_y && ($bigmode = "verify");
  57. $lopt_V && ($bigmode = "verify");
  58. $lopt_q && ($bigmode = "query");
  59. $lopt_U && ($bigmode = "install") && ($rpm{"upgrade"} = 1);
  60. $lopt_i && ($bigmode ne "query") && ($bigmode = "install");
  61. $lopt_i && ($bigmode eq "query") && ($querymode{"info"} = 1);
  62. $lopt_u && ($bigmode = "uninstall");
  63. $lopt_a && ($querywhat = "all");
  64. $lopt_f && ($querywhat = "whence");
  65. $lopt_F && ($querywhat = "Whence");
  66. $lopt_p && ($querywhat = "package");
  67. $lopt_P && ($querywhat = "Package");
  68. $lopt_c && ($rpm{"clean"} = 1, $querymode{"list"} = 1, $querymode{config} = 1);
  69. $lopt_l && ($querymode{"list"} = 1);
  70. $lopt_d && ($querymode{"list"} = 1, $querymode{"doc"} = 1);
  71. $lopt_s && ($querymode{"state"} = 1, $querymode{"list"} = 1);
  72. $lopt_h && ($rpm{"marker"} = "hash");
  73.  
  74. if ($lopt_v == 1) {
  75.     &setmessageverbose();
  76. } elsif ($lopt_v >= 2) {
  77.     &setmessagedebug();
  78. }
  79.  
  80. # Now we can process the long arguments
  81. foreach $_ (@rest) {
  82.     ($rpm{"root"} == 1) && ($rpm{"root"} = $_, $rpm{"rootspec"} = $_, next);
  83.     ($rpm{"timecheck"} == -1) && ($rpm{"timecheck"} = $_, next);
  84.     /^--upgrade$/ && ($bigmode = "install") && ($rpm{"upgrade"} = 1, next);
  85.     /^--root$/ && ($rpm{"root"} = 1, next);
  86.     /^--short-circuit$/ && ($rpm{"short_circuit"} = 1, next);
  87.     /^--clean$/ && ($rpm{"clean"} = 1, next);
  88.     /^--time-check$/ && ($rpm{"timecheck"} = -1, next);
  89.     /^--test$/ && ($rpm{"test"} = 1, $rpm{"keeptemps"} = 1, next);
  90.     /^--quiet$/ && (&setmessagequiet(), next);
  91.     /^--percent$/ && ($rpm{"marker"} = "percent", next);
  92.     /^--hash$/ && ($rpm{"marker"} = "hash", next);
  93.     /^--force$/ && ($rpm{"force"} = 1, next);
  94.     /^--query$/ && ($bigmode = "query", next);
  95.     /^--verify$/ && ($bigmode = "verify", next);
  96.     /^--keep-temp/ && ($rpm{"keeptemps"} = 1, next);
  97.     /^--verbose$/ && (&setmessageverbose(), next);
  98.     /^--install$/ && ($bigmode ne "query") && ($bigmode = "install");
  99.     /^--uninstall$/ && ($bigmode = "uninstall");
  100.     /^--debug$/ && (&setmessagedebug(), next);
  101.     /^--help$/ && ($bigmode = "help", next);
  102.     /^-/ && (&error("Unrecognized option: $_"));
  103.     push(@args, $_);
  104. }
  105. ($rpm{"root"} == 1) && &error("--root requires argument");
  106.  
  107. if ($lopt_b) {
  108.     $_ = $lopt_b;
  109.     $bigmode = "build";
  110.     /^p$/ && ($mode = $DO_PREP);
  111.     /^l$/ && ($mode = $DO_LIST_CHECK);
  112.     /^b$/ && ($mode = $DO_PREP | $DO_BUILD | $DO_INSTALL | $DO_BINARY | $DO_CLEAN);
  113.     /^a$/ && ($mode = $DO_PREP | $DO_BUILD | $DO_INSTALL | $DO_BINARY | $DO_SOURCE | $DO_CLEAN);
  114.     if ($rpm{"short_circuit"}) {
  115.     /^c$/ && ($mode = $DO_BUILD);
  116.     /^i$/ && ($mode = $DO_INSTALL);
  117.     } else {
  118.     /^c$/ && ($mode = $DO_PREP | $DO_BUILD);
  119.     /^i$/ && ($mode = $DO_PREP | $DO_BUILD | $DO_INSTALL);
  120.     }
  121. }
  122.  
  123. ## All options are processed!
  124.  
  125. if ($bigmode ne "build") {
  126.     $rpm{"require_vendor"} = 0;
  127.     $rpm{"require_distribution"} = 0;
  128.     $rpm{"require_group"} = 0;
  129.     $rpm{"require_icon"} = 0;
  130. }
  131.  
  132. if ($bigmode eq "build") {
  133.     $h = `hostname`;
  134.     if ($h =~ /redhat\.com/) {
  135.     if (! ($rpm{"require_vendor"} &&
  136.            $rpm{"require_distribution"} &&
  137.            $rpm{"require_group"})) {
  138.         error("Bad /etc/rpmrc for redhat.com");
  139.     }
  140.     }
  141.     require "build.pl";
  142.     &do_build($mode, *args);
  143. } elsif ($bigmode eq "uninstall") {
  144.     require "uninstall.pl";
  145.     &uninstallpackages($rpm{"force"}, $rpm{"test"}, $rpm{"nosub"}, @args);
  146. } elsif ($bigmode eq "verify") {
  147.     require "verify.pl";
  148.     &doverify($querywhat, @args);
  149. } elsif ($bigmode eq "install") {
  150.     require "install.pl";
  151.     &installpackages($rpm{"force"}, $rpm{"test"}, $rpm{"marker"}, 
  152.             $rpm{"upgrade"}, @args);
  153. } elsif ($bigmode eq "query") {
  154.     require "query.pl";
  155.     &doquery($querywhat, *querymode, @args);
  156. } else {
  157.     require "help.pl";
  158.     &usage();
  159. }
  160.  
  161. if (! $rpm{"keeptemps"}) {
  162.     &remove_temps;
  163. }
  164. exit (0);
  165.