summaryrefslogtreecommitdiffstats
path: root/installer
diff options
context:
space:
mode:
authorOliver Tappe2007-05-13 16:52:38 +0200
committerOliver Tappe2007-05-13 16:52:38 +0200
commit432df6e5db5544ad729a3a24a5a74aa98724205a (patch)
treeadfa3cbd3c4ef3d07fae4a028924f09cae27a449 /installer
parent* minor cleanup of text fragment (avoid slang) (diff)
downloadcore-432df6e5db5544ad729a3a24a5a74aa98724205a.tar.gz
core-432df6e5db5544ad729a3a24a5a74aa98724205a.tar.xz
core-432df6e5db5544ad729a3a24a5a74aa98724205a.zip
* added implementation for smart metapackager
git-svn-id: http://svn.openslx.org/svn/openslx/trunk@1067 95ad53e4-c205-0410-b2fa-d234c58c8868
Diffstat (limited to 'installer')
-rw-r--r--installer/OpenSLX/OSSetup/MetaPackager/smart.pm97
1 files changed, 97 insertions, 0 deletions
diff --git a/installer/OpenSLX/OSSetup/MetaPackager/smart.pm b/installer/OpenSLX/OSSetup/MetaPackager/smart.pm
new file mode 100644
index 00000000..315b53d5
--- /dev/null
+++ b/installer/OpenSLX/OSSetup/MetaPackager/smart.pm
@@ -0,0 +1,97 @@
+# Copyright (c) 2006, 2007 - OpenSLX GmbH
+#
+# This program is free software distributed under the GPL version 2.
+# See http://openslx.org/COPYING
+#
+# If you have any feedback please consult http://openslx.org/feedback and
+# send your suggestions, praise, or complaints to feedback@openslx.org
+#
+# General information about OpenSLX can be found at http://openslx.org/
+# -----------------------------------------------------------------------------
+# smart.pm
+# - provides smart-specific overrides of the OpenSLX::OSSetup::MetaPackager API.
+# -----------------------------------------------------------------------------
+package OpenSLX::OSSetup::MetaPackager::smart;
+
+use vars qw(@ISA $VERSION);
+@ISA = ('OpenSLX::OSSetup::MetaPackager::Base');
+$VERSION = 1.01; # API-version . implementation-version
+
+use strict;
+use Carp;
+use OpenSLX::Basics;
+use OpenSLX::OSSetup::MetaPackager::Base 1.01;
+
+################################################################################
+### implementation
+################################################################################
+sub new
+{
+ my $class = shift;
+ my $self = {
+ 'name' => 'smart',
+ };
+ return bless $self, $class;
+}
+
+sub initialize
+{
+ my $self = shift;
+ my $engine = shift;
+
+ $self->SUPER::initialize($engine);
+ $ENV{LC_ALL} = 'POSIX';
+}
+
+sub initPackageSources
+{
+ my $self = shift;
+
+ slxsystem("rm -f /etc/smart/channels/*");
+}
+
+sub setupPackageSource
+{
+ my $self = shift;
+ my $repoName = shift;
+ my $repoInfo = shift;
+
+ my $repoURL = $self->{engine}->selectBaseURL($repoInfo);
+ if (length($repoInfo->{'repo-subdir'})) {
+ $repoURL .= "/$repoInfo->{'repo-subdir'}";
+ }
+ my $repoDescrCmdline
+ = qq[$repoName name="$repoInfo->{name}" baseurl=$repoURL];
+ $repoDescrCmdline .= " type=rpm-md";
+ if (slxsystem("smart channel -y --add $repoDescrCmdline")) {
+ die _tr("unable to add channel '%s' (%s)\n", $repoName, $!);
+ }
+}
+
+sub installSelection
+{
+ my $self = shift;
+ my $pkgSelection = shift;
+
+ if (slxsystem("smart update")) {
+ die _tr("unable to update channel info (%s)\n", $!);
+ }
+ if (slxsystem("smart install -y $pkgSelection")) {
+ die _tr("unable to install selection (%s)\n", $!);
+ }
+}
+
+sub updateBasicVendorOS
+{
+ my $self = shift;
+
+ if (slxsystem("smart upgrade -y --update")) {
+ if ($! == 2) {
+ # file not found => smart isn't installed
+ die _tr("unable to update this vendor-os, as it seems to lack an installation of smart!\n");
+ }
+ die _tr("unable to update this vendor-os (%s)\n", $!);
+ }
+}
+
+1; \ No newline at end of file