diff options
-rw-r--r-- | OpenSLX/Translations/de.pm (renamed from config-db/OpenSLX/Translations/de.pm) | 0 | ||||
-rw-r--r-- | OpenSLX/Translations/posix.pm (renamed from config-db/OpenSLX/Translations/posix.pm) | 0 | ||||
-rw-r--r-- | config-db/OpenSLX/Basics.pm | 266 | ||||
-rwxr-xr-x | config-db/slxldd | 2 | ||||
-rwxr-xr-x | config-db/slxsettings | 2 | ||||
-rwxr-xr-x | config-db/slxsetup | 4 | ||||
-rwxr-xr-x | installer/slxossetup | 7 |
7 files changed, 9 insertions, 272 deletions
diff --git a/config-db/OpenSLX/Translations/de.pm b/OpenSLX/Translations/de.pm index 716e3f34..716e3f34 100644 --- a/config-db/OpenSLX/Translations/de.pm +++ b/OpenSLX/Translations/de.pm diff --git a/config-db/OpenSLX/Translations/posix.pm b/OpenSLX/Translations/posix.pm index 9140442c..9140442c 100644 --- a/config-db/OpenSLX/Translations/posix.pm +++ b/OpenSLX/Translations/posix.pm diff --git a/config-db/OpenSLX/Basics.pm b/config-db/OpenSLX/Basics.pm deleted file mode 100644 index e8874b8a..00000000 --- a/config-db/OpenSLX/Basics.pm +++ /dev/null @@ -1,266 +0,0 @@ -# Basics.pm - provides basic functionality of the OpenSLX config-db. -# -# (c) 2006 - OpenSLX.com -# -# Oliver Tappe <ot@openslx.com> -# -package OpenSLX::Basics; - -use strict; -use vars qw(@ISA @EXPORT $VERSION); - -use Exporter; -$VERSION = 0.02; -@ISA = qw(Exporter); - -@EXPORT = qw( - &openslxInit %openslxConfig %cmdlineConfig - &_tr &trInit - &vlog -); - -use vars qw(%openslxConfig %cmdlineConfig); - -################################################################################ -### Module implementation -################################################################################ -use Carp; -use FindBin; -use Getopt::Long; -use POSIX qw(locale_h); - -my %translations; - -# this hash will hold the active openslx configuration, -# the initial content is based on environment variables or default values. -# Each value may be overrided from config files and/or cmdline arguments. -%openslxConfig = ( - 'db-datadir' => $ENV{SLX_DB_DATADIR}, - 'db-name' => $ENV{SLX_DB_NAME} || 'openslx', - 'db-spec' => $ENV{SLX_DB_SPEC}, - 'db-type' => $ENV{SLX_DB_TYPE} || 'CSV', - 'locale' => setlocale(LC_MESSAGES), - 'locale-charmap' => `locale charmap`, - 'base-path' => $ENV{SLX_BASE_PATH} || '/opt/openslx', - 'config-path' => $ENV{SLX_CONFIG_PATH} || '/etc/opt/openslx', - 'private-path' => $ENV{SLX_PRIVATE_PATH} || '/var/opt/openslx', - 'public-path' => $ENV{SLX_PUBLIC_PATH} || '/srv/openslx', - 'temp-path' => $ENV{SLX_TEMP_PATH} || '/tmp', - 'verbose-level' => $ENV{SLX_VERBOSE_LEVEL} || '0', -); -chomp($openslxConfig{'locale-charmap'}); -$openslxConfig{'bin-path'} - = $ENV{SLX_BIN_PATH} || "$openslxConfig{'base-path'}/bin", -$openslxConfig{'db-basepath'} - = $ENV{SLX_DB_PATH} || "$openslxConfig{'private-path'}/db", -$openslxConfig{'export-path'} - = $ENV{SLX_EXPORT_PATH} || "$openslxConfig{'public-path'}/export", -$openslxConfig{'share-path'} - = $ENV{SLX_SHARE_PATH} || "$openslxConfig{'base-path'}/share", -$openslxConfig{'tftpboot-path'} - = $ENV{SLX_TFTPBOOT_PATH} || "$openslxConfig{'public-path'}/tftpboot", - -# specification of cmdline arguments that are shared by all openslx-scripts: -%cmdlineConfig; -my %openslxCmdlineArgs = ( - 'base-path=s' => \$cmdlineConfig{'base-path'}, - # basic path to project files (binaries, functionality templates and - # distro-specs) - 'bin-path=s' => \$cmdlineConfig{'bin-path'}, - # path to binaries and scripts - 'config-path=s' => \$cmdlineConfig{'config-path'}, - # path to configuration files - 'db-basepath=s' => \$cmdlineConfig{'db-basepath'}, - # basic path to openslx database, defaults to "${private-path}/db" - 'db-datadir=s' => \$cmdlineConfig{'db-datadir'}, - # data folder created under db-basepath, default depends on db-type - 'db-name=s' => \$cmdlineConfig{'db-name'}, - # name of database, defaults to 'openslx' - 'db-spec=s' => \$cmdlineConfig{'db-spec'}, - # full specification of database, a special string defining the - # precise database to connect to (the contents of this string - # depend on db-type) - 'db-type=s' => \$cmdlineConfig{'db-type'}, - # type of database to connect to (CSV, SQLite, ...), defaults to 'CSV' - 'export-path=s' => \$cmdlineConfig{'export-path'}, - # path to root of all exports, each different export-type (e.g. nfs, nbd) - # has a separate subfolder in here. - 'locale=s' => \$cmdlineConfig{'locale'}, - # locale to use for translations - 'locale-charmap=s' => \$cmdlineConfig{'locale-charmap'}, - # locale-charmap to use for I/O (iso-8859-1, utf-8, etc.) - 'logfile=s' => \$cmdlineConfig{'locale'}, - # file to write logging output to, defaults to STDERR - 'private-path=s' => \$cmdlineConfig{'private-path'}, - # path to private data (which is *not* accesible by clients and contains - # database, vendorOSes and all local extensions [system specific scripts]) - 'public-path=s' => \$cmdlineConfig{'public-path'}, - # path to public data (which is accesible by clients and contains - # PXE-configurations, kernels, initramfs and client configurations) - 'share-path=s' => \$cmdlineConfig{'share-path'}, - # path to sharable data (functionality templates and distro-specs) - 'temp-path=s' => \$cmdlineConfig{'temp-path'}, - # path to temporary data (used during demuxing) - 'tftpboot-path=s' => \$cmdlineConfig{'tftpboot-path'}, - # path to root of tftp-server, tftpable data will be stored there - 'verbose-level=i' => \$cmdlineConfig{'verbose-level'}, - # level of logging verbosity (0-3) -); - -# filehandle used for logging: -my $openslxLog = *STDERR; - -# ------------------------------------------------------------------------------ -sub vlog -{ - my $minLevel = shift; - return if $minLevel > $openslxConfig{'verbose-level'}; - print $openslxLog '-'x$minLevel, @_, "\n"; -} - -# ------------------------------------------------------------------------------ -sub openslxInit -{ - # evaluate cmdline arguments: - Getopt::Long::Configure('no_pass_through'); - GetOptions(%openslxCmdlineArgs) or return 0; - - # try to read and evaluate config files: - my $configPath = $cmdlineConfig{'config-path'} - || $openslxConfig{'config-path'}; - foreach my $f ("$configPath/settings.default", - "$configPath/settings.local", - "$ENV{HOME}/.openslx/settings") { - next unless open(CONFIG, "<$f"); - if ($cmdlineConfig{'verbose-level'} >= 2) { - vlog 0, "reading config-file $f..."; - } - while(<CONFIG>) { - chomp; - s/#.*//; - s/^\s+//; - s/\s+$//; - next unless length; - if (! /^(\w+)=(.*)$/) { - die _tr("config-file <%s> has incorrect syntax here:\n\t%s\n", - $f, $_); - } - my ($key, $value) = ($1, $2); - # N.B.: the config files are used by shell-scripts, too, so in - # order to comply with shell-style, the config files use shell - # syntax and an uppercase, underline-as-separator format. - # Internally, we use lowercase, minus-as-separator format, so we - # need to convert the environment variable names to our own - # internal style here (e.g. 'SLX_BASE_PATH' to 'base-path'): - $key =~ s[^SLX_][]; - $key =~ tr/[A-Z]_/[a-z]-/; - $openslxConfig{$key} = $value; - } - close CONFIG; - } - - # push any cmdline argument into our config hash, possibly overriding any - # setting from the config files: - while(my ($key, $val) = each(%cmdlineConfig)) { - next unless defined $val; - $openslxConfig{$key} = $val; - } - - if (defined $openslxConfig{'logfile'} - && open(LOG, ">>$openslxConfig{'logfile'}")) { - $openslxLog - } - if ($openslxConfig{'verbose-level'} >= 2) { - foreach my $k (sort keys %openslxConfig) { - vlog 2, "config-dump: $k = $openslxConfig{$k}"; - } - } - - # setup translation "engine": - trInit(); - - return 1; -} - -# ------------------------------------------------------------------------------ -sub trInit -{ - # set the specified locale... - setlocale('LC_ALL', $openslxConfig{'locale'}); - - # ...and activate automatic charset conversion on all I/O streams: - binmode(STDIN, ":encoding($openslxConfig{'locale-charmap'})"); - binmode(STDOUT, ":encoding($openslxConfig{'locale-charmap'})"); - binmode(STDERR, ":encoding($openslxConfig{'locale-charmap'})"); - use open ':locale'; - - my $locale = $openslxConfig{'locale'}; - if (lc($locale) eq 'c') { - # treat locale 'c' as equivalent for 'posix': - $locale = 'posix'; - } - - # load Posix-Translations first in order to fall back to English strings - # if a specific translation isn't available: - if (eval "require OpenSLX::Translations::posix") { - %translations = %OpenSLX::Translations::posix::translations; - } else { - vlog 1, "unable to load translations module 'posix' ($!)."; - } - - if (lc($locale) ne 'posix') { - # parse locale and canonicalize it (e.g. to 'de_DE') and generate - # two filenames from it (language+country and language only): - if ($locale !~ m{^\s*([^_]+)(?:_(\w+))?}) { - die "locale $locale has unknown format!?!"; - } - my @locales; - if (defined $2) { - push @locales, lc($1).'_'.uc($2); - } - push @locales, lc($1); - - # try to load any of the Translation modules (starting with the more - # specific one [language+country]): - my $loadedTranslationModule; - foreach my $trName (@locales) { - my $trModule = "OpenSLX::Translations::$trName"; - if (eval "require $trModule") { - # Access OpenSLX::Translations::<locale>::translations - # via a symbolic reference... - no strict 'refs'; - my $translationsRef = \%{ "${trModule}::translations" }; - # ...and copy the available translations into our hash: - foreach my $k (keys %{$translationsRef}) { - $translations{$k} = $translationsRef->{$k}; - } - $loadedTranslationModule = $trModule; - vlog 1, _tr("translations module %s loaded successfully", - $trModule); - last; - } - } - if (!defined $loadedTranslationModule) { - vlog 1, "unable to load any translations module for locale '$locale' ($!)."; - } - } -} - -# ------------------------------------------------------------------------------ -sub _tr -{ - my $trOrig = shift; - - my $trKey = $trOrig; - $trKey =~ s[\n][\\n]g; - $trKey =~ s[\t][\\t]g; - - my $formatStr = $translations{$trKey}; - if (!defined $formatStr) { - vlog 1, "Translation key '$trKey' not found."; - $formatStr = $trOrig; - } - return sprintf($formatStr, @_); -} - -1;
\ No newline at end of file diff --git a/config-db/slxldd b/config-db/slxldd index 534752e6..212b6fe8 100755 --- a/config-db/slxldd +++ b/config-db/slxldd @@ -27,7 +27,7 @@ use Pod::Usage; use FindBin; use lib "$FindBin::RealBin/../lib"; # production path -use lib "$FindBin::RealBin"; +use lib "$FindBin::RealBin/.."; # development path use OpenSLX::Basics; diff --git a/config-db/slxsettings b/config-db/slxsettings index 57623891..008d760c 100755 --- a/config-db/slxsettings +++ b/config-db/slxsettings @@ -29,7 +29,7 @@ use Pod::Usage; use FindBin; use lib "$FindBin::RealBin/../lib"; # production path -use lib "$FindBin::RealBin"; +use lib "$FindBin::RealBin/.."; # development path use OpenSLX::Basics; diff --git a/config-db/slxsetup b/config-db/slxsetup index eab58ad9..80734b2f 100755 --- a/config-db/slxsetup +++ b/config-db/slxsetup @@ -25,8 +25,10 @@ use Pod::Usage; use FindBin; use lib "$FindBin::RealBin/../lib"; # production path +use lib "$FindBin::RealBin/.."; + # development path to basic stuff use lib "$FindBin::RealBin"; - # development path + # development path to config-db stuff use OpenSLX::Basics; use OpenSLX::ConfigDB qw(:access :manipulation); diff --git a/installer/slxossetup b/installer/slxossetup index c6f6c05f..ae48877f 100755 --- a/installer/slxossetup +++ b/installer/slxossetup @@ -121,7 +121,8 @@ function setup_busybox_chroot() cp -p /etc/resolv.conf "${CHROOT_DIR}/etc/" # FIXME this might not be enough to satisfy the resolver - for file in /lib/libnss_dns* /lib/libresolv*; do +# for file in /lib/libnss_dns* /lib/libresolv*; do + for file in /lib/xxlib_dns* /lib/xxlibresolv*; do test -e "${file}" || \ continue dir="${CHROOT_DIR}/${file%/*}" @@ -134,7 +135,7 @@ function setup_busybox_chroot() function setup_busybox_stage1_config() { local key value CONFIG_FILE - + CONFIG_FILE="${CHROOT_DIR}/etc/slxbootstrap.conf" test -d "${CHROOT_DIR}/etc" || \ @@ -363,7 +364,7 @@ function install_slxselection() done test -z "${packagelist}" && \ return - + case "${META_PACKAGER}" in *debian*|*ubuntu**) : ${SLX_STAGE1_INSTALL_OPTIONS:=-y} |