diff options
author | Oliver Tappe | 2007-02-12 22:44:09 +0100 |
---|---|---|
committer | Oliver Tappe | 2007-02-12 22:44:09 +0100 |
commit | 1455d67711a5353adabdba8183d3bc603ea7f216 (patch) | |
tree | aff1e168c4e7bc30860613581bf472794cf621ff /installer/OpenSLX/OSSetup/Packager | |
parent | Inserted start script for policykitd (needed for device access in KDE (diff) | |
download | core-1455d67711a5353adabdba8183d3bc603ea7f216.tar.gz core-1455d67711a5353adabdba8183d3bc603ea7f216.tar.xz core-1455d67711a5353adabdba8183d3bc603ea7f216.zip |
* added perl-ified slxos-setup script and the relevant perl-modules, still not done, but
nearly there
git-svn-id: http://svn.openslx.org/svn/openslx/trunk@698 95ad53e4-c205-0410-b2fa-d234c58c8868
Diffstat (limited to 'installer/OpenSLX/OSSetup/Packager')
-rw-r--r-- | installer/OpenSLX/OSSetup/Packager/Base.pm | 84 | ||||
-rw-r--r-- | installer/OpenSLX/OSSetup/Packager/rpm.pm | 88 |
2 files changed, 172 insertions, 0 deletions
diff --git a/installer/OpenSLX/OSSetup/Packager/Base.pm b/installer/OpenSLX/OSSetup/Packager/Base.pm new file mode 100644 index 00000000..ca0fbbae --- /dev/null +++ b/installer/OpenSLX/OSSetup/Packager/Base.pm @@ -0,0 +1,84 @@ +# Base.pm - provides empty base of the OpenSLX OSSetup::Packager API. +# +# (c) 2006 - OpenSLX.com +# +# Oliver Tappe <ot@openslx.com> +# +package OpenSLX::OSSetup::Packager::Base; + +use vars qw($VERSION); +$VERSION = 1.01; # API-version . implementation-version + +use strict; +use Carp; + +################################################################################ +### interface methods +################################################################################ +sub new +{ + confess "Creating OpenSLX::OSSetup::Packager::Base-objects directly makes no sense!"; +} + +sub initialize +{ + my $self = shift; + my $distro = shift; + + $self->{'distro'} = $distro; +} + +sub unpackPackages +{ +} + +sub unpackPackages +{ +} + +sub importTrustedPackageKeys +{ +} + +sub installPrerequiredPackages +{ +} + +sub installPackages +{ +} + +1; +################################################################################ + +=pod + +=head1 NAME + +OpenSLX::OSSetup::Packager::Base - the base class for all OSSetup::Packagers + +=head1 SYNOPSIS + + package OpenSLX::OSSetup::Packager::coolnewpkg; + + use vars qw(@ISA $VERSION); + @ISA = ('OpenSLX::OSSetup::Packager::Base'); + $VERSION = 1.01; + + use coolnewpkg; + + sub new + { + my $class = shift; + my $self = {}; + return bless $self, $class; + } + + # override all methods of OpenSLX::OSSetup::Packager::Base in order to + # implement the support for a new packager + ... + +I<The synopsis above outlines a class that implements a +OSSetup::Packager for the (imaginary) packager B<coolnewpkg>> + +=cut diff --git a/installer/OpenSLX/OSSetup/Packager/rpm.pm b/installer/OpenSLX/OSSetup/Packager/rpm.pm new file mode 100644 index 00000000..2fb2755b --- /dev/null +++ b/installer/OpenSLX/OSSetup/Packager/rpm.pm @@ -0,0 +1,88 @@ +# rpm.pm +# - provides rpm-specific overrides of the OpenSLX::OSSetup::Packager API. +# +# (c) 2006 - OpenSLX.com +# +# Oliver Tappe <ot@openslx.com> +# +package OpenSLX::OSSetup::Packager::rpm; + +use vars qw(@ISA $VERSION); +@ISA = ('OpenSLX::OSSetup::Packager::Base'); +$VERSION = 1.01; # API-version . implementation-version + +use strict; +use Carp; +use OpenSLX::Basics; +use OpenSLX::OSSetup::Packager::Base 1.01; + +################################################################################ +### implementation +################################################################################ +sub new +{ + my $class = shift; + my $self = { + 'name' => 'rpm', + }; + return bless $self, $class; +} + +sub unpackPackages +{ + my $self = shift; + my $pkgs = shift; + + foreach my $pkg (@$pkgs) { + vlog 2, "unpacking package $pkg..."; + if (system("ash", "-c", "rpm2cpio $pkg | cpio -i -d")) { + die _tr("unable to unpack package <%s> (%s)", $pkg, $!); + } + } +} + +sub importTrustedPackageKeys +{ + my $self = shift; + my $keyFiles = shift; + my $finalPath = shift; + + return unless defined $keyFiles; + + foreach my $keyFile (@$keyFiles) { + vlog 2, "importing package key $keyFile..."; + if (system("rpm", "--root=$finalPath", "--import", "$keyFile")) { + die _tr("unable to import package key <%s> (%s)", $keyFile, $!); + } + } +} + +sub installPrerequiredPackages +{ + my $self = shift; + my $pkgs = shift; + my $finalPath = shift; + + return unless defined $pkgs && scalar(@$pkgs); + + if (system("rpm", "--root=$finalPath", "-ivh", "--nodeps", "--noscripts", + "--force", @$pkgs)) { + die _tr("error during prerequired-package-installation (%s)", $!); + } + system("rm", "-rf", "$finalPath/var/lib/rpm"); +} + +sub installPackages +{ + my $self = shift; + my $pkgs = shift; + my $finalPath = shift; + + return unless defined $pkgs && scalar(@$pkgs); + + if (system("rpm", "--root=$finalPath", "-ivh", @$pkgs)) { + die _tr("error during package-installation (%s)", $!); + } +} + +1;
\ No newline at end of file |