diff options
Diffstat (limited to 'build_tools/l7')
451 files changed, 29253 insertions, 0 deletions
diff --git a/build_tools/l7/build_all b/build_tools/l7/build_all new file mode 100755 index 0000000..4e9e97e --- /dev/null +++ b/build_tools/l7/build_all @@ -0,0 +1,2 @@ +#!/bin/sh +./larch-archin -p larch0/profiles/l7 install && ./larch-larchify -p larch0/profiles/l7 && ./larch-live_iso -p larch0/profiles/l7 diff --git a/build_tools/l7/cachepacs b/build_tools/l7/cachepacs new file mode 100755 index 0000000..3e4a1fb --- /dev/null +++ b/build_tools/l7/cachepacs @@ -0,0 +1,140 @@ +#! /bin/bash +# +# cachepacs - install pkgs to cache dir, but don't isntall +# +# Author: James Meyer (based on inpacs) + + +# Working directory: +TMPDIR=/tmp/inpacs$$ +# File containing (filtered) list of base packages + added packages +basepacks=${TMPDIR}/basepacks + +APP="$( basename $0 )" + +exitfunc () { + # Remove temporary files + rm -rf ${TMPDIR} + exit $1 +} + +# Default pacman db path (this is a statement, not a configuration, so +# do not change it!) +DBPATH="/var/lib/pacman" + +# Default package cache, on the target +TARGETCACHE="${CACHE}" +# A host or remote package cache: +HOSTCACHE="" +# Absolute /path/to/file containing list of packages for 2nd install phase: +ADDEDPACKS="" +# Source file for base package list: +BASEPACKSFILE="" +# Source file for list of vetoed base packages: +VETOFILE="" +# Source directory for pacman database directories: +DBDIR="" +# pacman executable: +PACMANX="pacman -f" +# pacman configuration file +PACMANK="/etc/pacman.conf" + +checkfile () +{ + f=$( readlink -m $1 ) + if ! [ -f "${f}" ]; then + echo "ERROR: File doesn't exist: ${f}" + exitfunc + fi +} + +checkdir () +{ + f=$( readlink -m $1 ) + if ! [ -d "${f}" ]; then + echo "ERROR: Directory doesn't exist: ${f}" + exitfunc + fi +} + + +while getopts ":k:a:c:b:x:y:P:" Option +do + case ${Option} in + k ) checkfile ${OPTARG} + PACMANK=${f} ;; + a ) checkfile ${OPTARG} + CACHEPACKSFILE=${f} ;; + y ) checkdir ${OPTARG} + DBDIR=${f} ;; + P ) checkfile ${OPTARG} + PACMANX=${f} ;; + #* ) usage ;; + esac +done +shift $((${OPTIND} - 1)) +INSTLDIR="$1" + + +# grep the cachedir out of the installed pacman.conf +PCCACHE=`grep CacheDir $INSTLDIR/etc/pacman.conf|cut -d= -f2|cut -d\/ -f2-` +CACHEDIR=${INSTLDIR}/$PCCACHE + +echo "INSTLDIR=${INSTLDIR}" +echo "PACMANK=${PACMANK}" +echo "CACHEDIR=${CACHEDIR}" +echo "DBDIR=${DBDIR}" +echo "PACMANX=${PACMANX}" +echo + + +# test if the script is started by root user. If not, exit +if [ $UID -ne 0 ]; then + echo "Only root can run ${APP}"; exitfunc 1 +fi + +echo "//" +echo "// downloading packages to ${CACHEDIR}" + +PACMAN="${PACMANX} --config ${PACMANK} --noconfirm" + +rm -rf ${TMPDIR} +mkdir -p ${TMPDIR} + +# Helper function for installing a list of packages +doInstall() { + mkdir -p ${INSTLDIR}/sys + mkdir -p ${INSTLDIR}/proc + mount --bind /sys ${INSTLDIR}/sys + mount --bind /proc ${INSTLDIR}/proc + ${PACMAN} -r ${INSTLDIR} -Sw $1 + RET=$? + echo $RET + umount ${INSTLDIR}/proc + umount ${INSTLDIR}/sys + if [ ${RET} -ne 0 ]; then + echo "//" + echo "// cachepacks package $1 FAILED." + echo "//" + return 1 + fi +} + + +PACMAN="${PACMAN} --cachedir $CACHEDIR" + +########## GET LIST OF CACHE PACKAGES +echo "//" +echo "// ** Getting cache package list ..." +if [ -n "${CACHEPACKSFILE}" ]; then + echo "// from: ${CACHEPACKSFILE}" + CACHEPKGS=$( cat ${CACHEPACKSFILE} | grep -v "#" ) +else + echo " no cache package file found" + exit 0 +fi + + +doInstall "${CACHEPKGS}" +if [ $? -ne 0 ]; then exitfunc 1; fi +exitfunc diff --git a/build_tools/l7/larch b/build_tools/l7/larch new file mode 120000 index 0000000..04fc309 --- /dev/null +++ b/build_tools/l7/larch @@ -0,0 +1 @@ +larch0/gui/larch.py
\ No newline at end of file diff --git a/build_tools/l7/larch-7.2.18-1-any.pkg.tar.gz b/build_tools/l7/larch-7.2.18-1-any.pkg.tar.gz Binary files differnew file mode 100644 index 0000000..2409e53 --- /dev/null +++ b/build_tools/l7/larch-7.2.18-1-any.pkg.tar.gz diff --git a/build_tools/l7/larch-archin b/build_tools/l7/larch-archin new file mode 120000 index 0000000..4308781 --- /dev/null +++ b/build_tools/l7/larch-archin @@ -0,0 +1 @@ +larch0/cli/archin.py
\ No newline at end of file diff --git a/build_tools/l7/larch-archin.orig b/build_tools/l7/larch-archin.orig new file mode 100755 index 0000000..206e499 --- /dev/null +++ b/build_tools/l7/larch-archin.orig @@ -0,0 +1,378 @@ +#!/usr/bin/env python +# +# archin.py +# +# (c) Copyright 2010 Michael Towers (larch42 at googlemail dot com) +# +# This file is part of the larch project. +# +# larch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# larch is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with larch; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#---------------------------------------------------------------------------- +# 2010.07.19 + +# This is a command line script to perform an Arch Linux installation +# based on a list of packages. All needed parameters are passed as options. + +import os +from glob import glob +from config import * +from backend import * + +class Installation: + def __init__(self, options): + self.options = options + self.installation_dir = get_installation_dir() + if self.installation_dir == '/': + errout(_("Operations on '/' are not supported ...")) + + self.profile_dir = get_profile() + self.pacman_cmd = self.make_pacman_command() + self.make_pacman_conf() + + + def make_pacman_command(self): + """Construct pacman command. Return the command, including options. + This includes options for installation path, cache directory and + for suppressing the progress bar. It assumes a temporary location + for pacman.conf, which must also be set up. + If there is no pacman executable in the system PATH, check that + it is available in the larch directory. + """ + pacman = runcmd('bash -c "which pacman || echo _FAIL_"')[1][-1].strip() + if pacman == '_FAIL_': + # If the host is not Arch, there will probably be no pacman + # (if there is some other program called 'pacman' that's + # a real spanner in the works). + # The alternative is to provide it in the larch directory. + pacman = base_dir + '/pacman' + if not os.path.isfile(pacman): + errout(_("No pacman executable found")) + + pacman += (' -r %s --config %s --noconfirm' + % (self.installation_dir, PACMAN_CONF)) + if self.options.noprogress: + pacman += ' --noprogressbar' + if self.options.cache: + pacman += ' --cachedir ' + self.options.cache + return pacman + + + def make_pacman_conf(self, final=False): + """Construct the pacman.conf file used by larch. + To make it a little easier to manage upstream changes to the default + pacman.conf, a separate file (pacman.conf.repos) is used to specify + the repositories to use. The contents of this file are used to modify + the basic pacman.conf file, which may be the default version or one + provided in the profile. + The 'final' parameter determines whether the version for the resulting + live system (True) or for the installation process (False) is + generated. If generating the installation version, it is possible + to specify alternative repositories, via the 'repofile' option, + which allows the pacman.conf used for the installation to be + different from the version in the resulting live system. + The return value is a list of the names of the repositories which + are included. + It is also possible to specify just a customized mirrorlist for the + installation by placing it in the working directory. + """ + # Allow use of '*platform*' in pacman.conf.repos + platform = os.uname()[4] + if platform != 'x86_64': + platform = 'i686' + + # Get pacman.conf header part + pc0 = self.profile_dir + '/pacman.conf.options' + if not os.path.isfile(pc0): + pc0 = base_dir + '/data/pacman.conf' + pacmanconf = self.pacmanoptions(readfile(pc0)) + + # Get file with repository entries + pc1 = self.profile_dir + '/pacman.conf.repos' + if not os.path.isfile(pc1): + pc1 = base_dir + '/data/pacman.conf.repos' + if self.options.repofile and not final: + pc1 = os.path.realpath(self.options.repofile) + + # Get repository path + if final: + default = 'Include = /etc/pacman.d/mirrorlist' + else: + mlist = cwd + '/mirrorlist' + if not os.path.isfile(mlist): + mlist = '/etc/pacman.d/mirrorlist' + if not os.path.isfile(mlist): + mlist = base_dir + '/data/mirrorlist' + default = 'Include = ' + mlist + + # Read repository entries + repos = [] + for line in readfile(pc1).splitlines(): + line = line.strip() + if (not line) or (line[0] == '#'): + continue + r, s = [t.strip() for t in line.split(':', 1)] + repos.append(r) + s = s.replace('*default*', default) + pacmanconf += ('\n[%s]\n%s\n' + % (r, s.replace('*platform*', platform))) + + + writefile(pacmanconf, self.installation_dir + '/etc/pacman.conf' + if final else PACMAN_CONF) + return repos + + + def install(self): + """Clear the chosen installation directory and install the base + set of packages, together with any additional ones listed in the + file 'addedpacks' (in the profile), removing the packages in + 'vetopacks' from the list. + """ + if not query_yn(_("Install Arch to '%s'?") % self.installation_dir): + return False + # Can't delete the whole directory because it might be a mount point + if os.path.isdir(self.installation_dir): + if script('cleardir %s' % self.installation_dir): + return False + + # Ensure installation directory exists and check that device nodes + # can be created (creating /dev/null is also a workaround for an + # Arch bug - which may have been fixed, but this does no harm) + if not (runcmd('bash -c "mkdir -p %s/{dev,proc,sys}"' + % self.installation_dir)[0] + and runcmd('mknod -m 666 %s/dev/null c 1 3' + % self.installation_dir)[0]): + errout(_("Couldn't write to the installation path (%s)") + % self.installation_dir) + if not runcmd('bash -c "echo test >%s/dev/null"' + % self.installation_dir)[0]: + errout(_("The installation path (%s) is mounted 'nodev'.") + % self.installation_dir) + + # I should also check that it is possible to run stuff in the + # installation directory. + runcmd('bash -c "cp $( which echo ) %s"' % self.installation_dir) + if not runcmd('%s/echo "yes"' % self.installation_dir)[0]: + errout(_("The installation path (%s) is mounted 'noexec'.") + % self.installation_dir) + runcmd('rm %s/echo' % self.installation_dir) + + # Fetch package database + runcmd('mkdir -p %s/var/lib/pacman' % self.installation_dir) + self.refresh() + + # Get list of vetoed packages. + self.packages = [] + self.veto_packages = [] + self.add_packsfile(self.profile_dir, 'vetopacks', must=False) + self.veto_packages = self.packages + + # Include 'required' packages (these can still be vetoed, but + # in some cases that will mean a larch system cannot be built) + self.packages = [] + self.add_packsfile(base_dir + '/data', 'requiredpacks') + + # Add additional packages and groups, from 'addedpacks' file. + self.add_packsfile(self.profile_dir, 'addedpacks') + + # Now do the actual installation. + ok = self.pacmancall('-S', ' '.join(self.packages)) + if not ok: + errout(_("Package installation failed")) + + # Some chroot scripts might need /etc/mtab + runcmd('bash -c ":> %s/etc/mtab"' % self.installation_dir) + + # Build the final version of pacman.conf + self.make_pacman_conf(True) + comment(" *** %s ***" % _("Arch installation completed")) + return True + + + def add_packsfile(self, dir, packs_file, must=True): + path = dir + '/' + packs_file + if must and not os.path.isfile(path): + errout(_("No '%s' file") % path) + fh = open(path) + for line in fh: + line = line.strip() + if line and (line[0] != '#'): + if line[0] == '*': + self.add_group(line[1:].split()[0]) + elif line[0] == '+': + # Include directive + line = line[1:].split()[0] + if line[0] != '/': + line = dir + '/' + line + d, pf = line.rsplit('/', 1) + if not d: + errout(_("Invalid package file include: %s")) + self.add_packsfile(d, pf) + elif line.startswith('!!!'): + # Ignore everything (!) entered previously. + # Allows requiredpacks to be overridden in addedpacks. + self.packages = [] + else: + line = line.split()[0] + if ((line not in self.packages) + and (line not in self.veto_packages)): + self.packages.append(line) + fh.close() + + + def add_group(self, gname): + """Add the packages belonging to a group to the installaion list, + removing any in the veto list. + """ + # In the next line the call could be done as a normal user. + for line in runcmd('%s -Sg %s' % (self.pacman_cmd, gname))[1]: + l = line.split() + if l and (l[0] == gname) and (l[1] not in self.veto_packages): + self.packages.append(l[1]) + + + def refresh(self): + """This updates or creates the pacman-db in the installation. + This is done using using 'pacman ... -Sy' together with the + customized pacman.conf file. + """ + if not runcmd(self.pacman_cmd + ' -Sy', + filter=pacman_filter_gen())[0]: + errout(_("Couldn't synchronize pacman database (pacman -Sy)")) + return True + + + def pacmancall(self, op, arg): + """Mount-bind the sys and proc directories before calling the + pacman command built by make_pacman_command to perform operation + 'op' (e.g. '-S') with argument(s) 'arg' (a string). + Then unmount sys and proc and return True if the command succeeded. + """ + # (a) Prepare the destination environment (bind mounts) + mount("/sys", "%s/sys" % self.installation_dir, "--bind") + mount("/proc", "%s/proc" % self.installation_dir, "--bind") + + # (b) Call pacman + ok = runcmd("%s %s %s" % (self.pacman_cmd, op, arg), + filter=pacman_filter_gen())[0] + + # (c) Remove bound mounts + unmount(("%s/sys" % self.installation_dir, + "%s/proc" % self.installation_dir)) + return ok + + + def pacmanoptions(self, text): + """A filter for pacman.conf to remove the repository info. + """ + texto = "" + block = "" + for line in text.splitlines(): + block += line + "\n" + if line.startswith("#["): + break + if line.startswith("[") and not line.startswith("[options]"): + break + if not line.strip(): + texto += block + block = "" + return texto + + + def sync(self, *packs): + return self.pacmancall('-S', ' '.join(packs)) + + + def update(self, *files): + return self.pacmancall('-U', ' '.join(files)) + + + def remove(self, *packs): + return self.pacmancall('-Rs', ' '.join(packs)) + + + +if __name__ == "__main__": + start_translator() + cwd = os.getcwd() + + operations = 'install|sync|update|remove|refresh' + from optparse import OptionParser, OptionGroup + parser = OptionParser(usage=(_("usage: %%prog [options] %s [packages]") + % operations)) + + parser.add_option("-p", "--profile", action="store", type="string", + default="", dest="profile", + help=_("Profile: 'user:profile-name' or path to profile directory")) + parser.add_option("-i", "--installation-dir", action="store", type="string", + default="", dest="idir", + help=_("Path to directory to be larchified (default %s)") + % INSTALLATION) + parser.add_option("-s", "--slave", action="store_true", dest="slave", + default=False, help=_("Run as a slave from a controlling program" + " (e.g. from a gui)")) + parser.add_option("-q", "--quiet", action="store_true", dest="quiet", + default=False, help=_("Suppress output messages, except errors" + " (no effect if -s specified)")) + + + parser.add_option("-f", "--force", action="store_true", dest="force", + default=False, help=_("Don't ask for confirmation")) + + parser.add_option("-r", "--repofile", action="store", type="string", + default="", dest="repofile", + help=_("Supply a substitute repository list (pacman.conf.repos)" + " for the installation only")) + parser.add_option("-c", "--cache-dir", action="store", type="string", + default="", dest="cache", + help=_("pacman cache directory (default /var/cache/pacman/pkg)")) + parser.add_option("-n", "--noprogress", action="store_true", + dest="noprogress", + default=False, help=_("Don't show pacman's progress bar")) +## I think pacman is going to get support for something like '$arch', at +## which stage I could again consider architecture switching support in larch. +# parser.add_option("-a", "--arch", action="store", type="string", +# default="", dest="arch", +# help=_("processor architecture (x86_64|i686) - defaults to" +# " that of the host." +# " This is an untested feature, which is probably only partially" +# " implemented and may well not work.")) + + (options, args) = parser.parse_args() + if not args: + print _("You must specify which operation to perform:\n") + parser.print_help() + sys.exit(1) + + if os.getuid() != 0: + print _("This application must be run as root") + sys.exit(1) + + init('archin', options) + op = args[0] + if op not in operations.split('|'): + print (_("Invalid operation: '%s'\n") % op) + parser.print_help() + sys.exit(1) + + installation = Installation(options) + method = getattr(installation, op) + + if method(*args[1:]): + sys.exit(0) + else: + sys.exit(1) + diff --git a/build_tools/l7/larch-boot_iso b/build_tools/l7/larch-boot_iso new file mode 120000 index 0000000..f4a39c7 --- /dev/null +++ b/build_tools/l7/larch-boot_iso @@ -0,0 +1 @@ +larch0/cli/boot_iso.py
\ No newline at end of file diff --git a/build_tools/l7/larch-larchify b/build_tools/l7/larch-larchify new file mode 120000 index 0000000..1b890f1 --- /dev/null +++ b/build_tools/l7/larch-larchify @@ -0,0 +1 @@ +larch0/cli/larchify.py
\ No newline at end of file diff --git a/build_tools/l7/larch-larchify.orig b/build_tools/l7/larch-larchify.orig new file mode 100755 index 0000000..15a4d6a --- /dev/null +++ b/build_tools/l7/larch-larchify.orig @@ -0,0 +1,588 @@ +#!/usr/bin/env python +# +# larchify.py +# +# (c) Copyright 2009-2010 Michael Towers (larch42 at googlemail dot com) +# +# This file is part of the larch project. +# +# larch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# larch is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with larch; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#---------------------------------------------------------------------------- +# 2010.07.13 + +# This is a command line script to prepare a larch live system from an +# Arch Linux installation. All needed parameters are passed as options. + +import os, sys +from config import * +from backend import * +from userinfo import Userinfo +from glob import glob +import random, crypt +from subprocess import Popen, PIPE, STDOUT + + +class Builder: + """This class manages 'larchifying' an Arch Linux installation. + """ + def __init__(self, options): + self.installation_dir = get_installation_dir() + self.installation0 = (self.installation_dir + if self.installation_dir != "/" else "") + testfile = self.installation0 + '/etc/pacman.conf' + if not os.path.isfile(testfile): + errout(_("File '%s' doesn't exist:\n" + " '%s' not an Arch installation?") + % (testfile, self.installation_dir)) + + self.profile_dir = get_profile() + + + def build(self, options): + if not (self.installation0 or query_yn(_( + "Building a larch live medium from the running system is" + "\nan error prone process. Changes to the running system" + "\nmade while running this function may be only partially" + "\nincorporated into the compressed system images." + "\n\nDo you wish to continue?")), True): + return False + + # Define the working area - it must be inside the installation + # because of the use of chroot for some functions + self.larchify_dir = self.installation0 + CHROOT_DIR_LARCHIFY + # Location for the live medium image + self.medium_dir = self.installation0 + CHROOT_DIR_MEDIUM + # And potentially a saved system.sqf + self.system_sqf = self.installation0 + CHROOT_SYSTEMSQF + # Needed for a potentially saved locales directory + self.locales_base = self.installation0 + CHROOT_DIR_BUILD + # For building the (mods.sqf) overlay + self.overlay = self.installation0 + CHROOT_DIR_OVERLAY + comment("Initializing larchify process") + + if options.oldsqf: + if os.path.isfile(self.medium_dir + "/larch/system.sqf"): + runcmd("mv %s/larch/system.sqf %s" % + (self.medium_dir, self.system_sqf)) + else: + runcmd("rm -f %s" % self.system_sqf) + + # Clean out larchify area and create overlay directory + runcmd('rm -rf %s' % self.larchify_dir) + runcmd('mkdir -p %s' % self.overlay) + + if not self.find_kernel(): + return False + + if not self.system_check(): + return False + + comment("Beginning to build larch medium files") + # Clear out the directory + runcmd('rm -rf %s' % self.medium_dir) + # The base medium boot directory, bootloader independent. + runcmd('mkdir -p %s/boot' % self.medium_dir) + # The main larch direcory + runcmd('mkdir -p %s/larch' % self.medium_dir) + + # kernel + runcmd("cp -f %s/boot/%s %s/boot/larch.kernel" % + (self.installation0, self.kname, self.medium_dir)) + # Remember file name (to ease update handling) + runcmd('bash -c "echo \'%s\' > %s/larch/kernelname"' + % (self.kname, self.medium_dir)) + + # if no saved system.sqf, squash the Arch installation at self.installation_dir + if not os.path.isfile(self.system_sqf): + comment("Generating system.sqf") + # root directories which are not included in the squashed system.sqf + ignoredirs = "boot dev mnt media proc sys tmp .livesys " + ignoredirs += CHROOT_DIR_BUILD.lstrip("/") + # /var stuff + ignoredirs += " var/log var/tmp var/lock" + # others + ignoredirs += " usr/lib/locale" + + # Additional directories to ignore can also be specified in the + # profile. This is a nasty option. It was requested, and might + # be useful under certain special circumstances, but I recommend + # not using it unless you are really sure what you are doing. + veto_file = self.profile_dir + '/vetodirs' + if os.path.isfile(veto_file): + fh = open(veto_file) + for line in fh: + line = line.strip() + if line and (line[0] != '#'): + ignoredirs += ' ' + line.lstrip('/') + fh.close() + + if not chroot(self.installation0, + "/sbin/mksquashfs '/' '%s' -e %s" + % (CHROOT_SYSTEMSQF, ignoredirs), + filter=mksquashfs_filter_gen()): + errout(_("Squashing system.sqf failed")) + # remove execute attrib + runcmd("chmod oga-x %s" % self.system_sqf) + + # move system.sqf to medium directory + runcmd("mv %s %s/larch" % (self.system_sqf, self.medium_dir)) + + # prepare overlay + comment("Generating larch overlay") + # Copy over the overlay from the selected profile + if os.path.isdir("%s/rootoverlay" % self.profile_dir): + runcmd('bash -c "cp -rf %s/rootoverlay/* %s"' + % (self.profile_dir, self.overlay)) + # Ensure there is an /etc directory in the overlay + runcmd("mkdir -p %s/etc" % self.overlay) + # fix sudoers if any + if os.path.isfile("%s/etc/sudoers" % self.overlay): + runcmd("chmod 0440 %s/etc/sudoers" % self.overlay) + runcmd("chown root:root %s/etc/sudoers" % self.overlay) + + # Prepare inittab + inittab = self.overlay + "/etc/inittab" + itsave = inittab + ".larchsave" + it0 = self.installation0 + "/etc/inittab" + itl = self.overlay + "/etc/inittab.larch" + if not os.path.isfile(itl): + itl = self.installation0 + "/etc/inittab.larch" + if not os.path.isfile(itl): + itl = None + # Save the original inittab if there is an inittab.larch file, + # ... if there isn't already a saved one + if itl: + if ((not os.path.isfile(it0 + ".larchsave")) + and (not os.path.isfile(itsave))): + runcmd("cp %s %s" % (it0, itsave)) + # Use the .larch version in the live system + runcmd("cp -f %s %s" % (itl, inittab)) + + comment("Generating larch initcpio") + if not self.gen_initramfs(): + return False + + lpath = self.locales_base + '/locale' + if self.installation0: + if options.oldlocales and os.path.isdir(lpath): + comment("Copying saved glibc locales") + runcmd('rm -rf %s/usr/lib/locale' % self.overlay) + runcmd('mkdir -p %s/usr/lib' % self.overlay) + runcmd('cp -a %s %s/usr/lib' % (lpath, self.overlay)) + else: + comment("Generating glibc locales") + runcmd('rm -rf %s' % lpath) + script('larch-locales "%s" "%s"' % (self.installation0, + self.overlay)) + # Save the generated locales for possible reuse + runcmd('cp -a %s/usr/lib/locale %s' % (self.overlay, + self.locales_base)) + + if (os.path.isfile(self.installation0 + '/usr/bin/ssh-keygen') + and not os.path.isfile(self.profile_dir + '/nosshkeys')): + # ssh initialisation - done here so that it doesn't need to + # be done when the live system boots + comment("Generating ssh keys to overlay") + sshdir = CHROOT_DIR_OVERLAY + "/etc/ssh" + runcmd("mkdir -p %s" % (self.installation0 + sshdir)) + for k, f in [("rsa1", "ssh_host_key"), ("rsa", "ssh_host_rsa_key"), + ("dsa", "ssh_host_dsa_key")]: + chroot(self.installation0, + "ssh-keygen -t %s -N '' -f %s/%s" + % (k, sshdir, f), ["dev"]) + + # Ensure the hostname is in /etc/hosts + script("larch-hosts %s %s" % (self.installation0, self.overlay)) + + # Handle /mnt + runcmd("mkdir -p %s/mnt" % self.overlay) + for d in os.listdir("%s/mnt" % self.installation0): + if os.path.isdir("%s/mnt/%s" % (self.installation0, d)): + runcmd("mkdir %s/mnt/%s" % (self.overlay, d)) + + # Ensure there is a /boot directory + runcmd("mkdir -p %s/boot" % self.overlay) + + # Run customization script + tweak = self.profile_dir + '/build-tweak' + if os.path.isfile(tweak): + comment("(WARNING): Running user's build customization script") + if runcmd(tweak + ' %s %s' % (self.installation0, + self.overlay))[0]: + comment("Customization script completed") + else: + errout(_("Build customization script failed")) + + # Get root password + rootpwf = self.profile_dir + '/rootpw' + if os.path.isfile(rootpwf): + rootpw = readfile(rootpwf).strip() + if rootpw == '!': + # Lock the password + rootcmd = 'usermod -L' + else: + rootcmd = "usermod -p '%s'" % encryptPW(rootpw) + else: + rootcmd = None + + # Add users and set root password + if self.installation0 and not self.add_users(rootcmd): + return False + + comment("Squashing mods.sqf") + if not chroot(self.installation0, + "/sbin/mksquashfs '%s' '%s/larch/mods.sqf'" + % (CHROOT_DIR_OVERLAY, CHROOT_DIR_MEDIUM), + filter=mksquashfs_filter_gen()): + errout(_("Squashing mods.sqf failed")) + # remove execute attrib + runcmd("chmod oga-x %s/larch/mods.sqf" % self.medium_dir) + + runcmd("rm -rf %s" % self.overlay) + + comment(" *** %s ***" % _("larchify-process completed")) + return True + + + def add_users(self, rootcmd): + userinfo = Userinfo(self.profile_dir) + userlist = [] + for user in userinfo.allusers(): + # Only include if the user does not yet exist + if runcmd('bash -c "grep \"^%s\" %s/etc/passwd || echo -"' + % (user, self.installation_dir))[1][0] != '-': + comment("(WARNING): User '%s' exists already" % user) + else: + userlist.append(user) + + # Only continue if there are new users in the list + if rootcmd: + clist = [('root', rootcmd + ' %s')] + else: + if userlist == []: + return True + clist = [] + + # Save system files and replace them by the overlay versions + savedir = self.larchify_dir + '/save_etc' + runcmd('rm -rf %s' % savedir) + runcmd('mkdir -p %s/default' % savedir) + savelist = 'group,gshadow,passwd,shadow,login.defs,skel' + runcmd('bash -c "cp -a %s/etc/{%s} %s"' + % (self.installation0, savelist, savedir)) + runcmd('cp -a %s/etc/default/useradd %s/default' + % (self.installation0, savedir)) + for f in ('group', 'gshadow', 'passwd', 'shadow', 'login.defs'): + if os.path.isfile(self.overlay + '/etc/%s'): + runcmd('cp %s/etc/%s %s/etc' + % (self.overlay, f, self.installation0)) + if os.path.isfile(self.overlay + '/etc/default/useradd'): + runcmd('cp %s/etc/default/useradd %s/etc/default' + % (self.overlay, self.installation0)) + if os.path.isdir(self.overlay + '/etc/skel'): + runcmd('cp -r %s/etc/skel %s/etc' + % (self.overlay, self.installation0)) + + # Build the useradd command + userdir0 = '/users' + userdir = self.larchify_dir + userdir0 + userdirs = [] + runcmd('mkdir -p %s/home' % self.overlay) + for u in userlist: + cline = 'useradd -m' + pgroup = userinfo.get(u, 'maingroup') + if pgroup: + cline += ' -g ' + pgroup + uid = userinfo.get(u, 'uid') + if uid: + cline += ' -u ' + uid + pw = userinfo.get(u, 'pw') + if (pw == ''): + # Passwordless login + pwcrypt = '' + else: + # Normal MD5 password + pwcrypt = encryptPW(pw) + cline += " -p '%s'" % pwcrypt + skeldir = userinfo.get(u, 'skel') + if skeldir: + # Custom home initialization directories in the profile + # always start with 'skel_' + skel = 'skel_' + skeldir + if skel not in userdirs: + userdirs.append(skel) + cline += ' -k %s/%s' % (CHROOT_DIR_LARCHIFY + userdir0, + skel) + # Allow for expert tweaking + cline += ' ' + userinfo.get(u, 'expert') + # The user and the command to be run + clist.append((u, cline + ' %s')) + xgroups = userinfo.get(u, 'xgroups') + if xgroups: + xgl = [] + for g in xgroups.split(','): + clist.append((u, 'usermod -a -G %s %%s' % g)) + + if userdirs: + # Copy custom 'skel' directories to build space + runcmd('rm -rf %s' % userdir) + runcmd('mkdir -p %s' % userdir) + for ud in userdirs: + runcmd('cp -r %s/%s %s/%s' % + (self.profile_dir, ud, userdir, ud)) + + nfail = 0 + ok = True + for u, cmd in clist: + if not chroot(self.installation0, cmd % u): + nfail += 1 + # Errors adding users to groups are not fatal: + if not cmd.startswith('usermod -a -G'): + ok = False + if os.path.isdir('%s/home/%s' % (self.installation0, u)): + runcmd('mv %s/home/%s %s/home' + % (self.installation0, u, self.overlay)) + + if nfail > 0: + errout(_("%d user account operation(s) failed") % nfail, 0) + # Move changed /etc/{group,gshadow,passwd,shadow} to overlay + runcmd('bash -c "mv %s/etc/{group,gshadow,passwd,shadow} %s/etc"' + % (self.installation0, self.overlay)) + # Restore system files in base installation + runcmd('rm -rf %s/etc/skel' % self.installation0) + runcmd('bash -c "cp -a %s/* %s/etc"' + % (savedir, self.installation0)) + return ok + + + def system_check(self): + comment("Testing for necessary packages and kernel modules") + fail = "" + warn = "" + nplist = ["larch-live"] + + mdep = (self.installation0 + + "/lib/modules/%s/modules.dep" % self.kversion) + if Popen(["grep", "/squashfs.ko", mdep], stdout=PIPE, + stderr=STDOUT).wait() != 0: + fail += _("No squashfs module found\n") + + if Popen(["grep", "/aufs.ko", mdep], stdout=PIPE, + stderr=STDOUT).wait() == 0: + self.ufs='_aufs' + nplist.append("aufs2-util") + + elif Popen(["grep", "/unionfs.ko", mdep], stdout=PIPE, + stderr=STDOUT).wait() == 0: + self.ufs='_unionfs' + + else: + fail += _("No aufs or unionfs module found\n") + + for p in nplist: + if not self.haspack(p): + fail += _("Package '%s' is needed by larch systems\n") % p + + if not self.haspack("syslinux"): + warn += _("Without package 'syslinux' you will not be able\n" + "to create syslinux or isolinux booting media\n") + + if (not self.haspack("cdrkit")) and (not self.haspack("cdrtools")): + warn += _("Without package 'cdrkit' (or 'cdrtools') you will\n" + "not be able to create CD/DVD media\n") + + if not self.haspack("eject"): + warn += _("Without package 'eject' you will have problems\n" + "using CD/DVD media\n") + + if warn: + cont = query_yn(_("WARNING:\n%s" + "\n Continue building?") % warn) + else: + cont = True + + if fail: + errout(_("ERROR:\n%s") % fail) + + return cont + + + def haspack(self, package): + """Check whether the given package is installed. + """ + for p in os.listdir(self.installation0 + '/var/lib/pacman/local'): + if p.rsplit("-", 2)[0] == package: + return True + return False + + + def find_kernel(self): + # The uncomfortable length of this function is deceptive, + # most of it is for dealing with errors. + comment("Seeking kernel information") + kscript = "%s/kernel" % self.profile_dir + if os.path.isfile(kscript): + p = Popen([kscript], stdout=PIPE, stderr=STDOUT) + r = p.communicate()[0] + if p.returncode == 0: + self.kname, self.kversion = r.split() + + else: + errout(_("Problem running %s:\n %s") % (kscript, r)) + else: + kernels = glob(self.installation0 + '/boot/vmlinuz*') + if len(kernels) > 1: + errout(_("More than one kernel found:\n %s") % + "\n ".join(kernels)) + elif not kernels: + errout(_("No kernel found")) + self.kname = os.path.basename(kernels[0]) + + self.kversion = None + for kv in os.listdir(self.installation0 + '/lib/modules'): + if os.path.isfile(self.installation0 + + ('/lib/modules/%s/modules.dep' % kv)): + if self.kversion: + errout(_("More than one set of kernel modules in %s") + % (self.installation0 + '/lib/modules')) + self.kversion = kv + else: + kmpath = self.installation0 + ('/lib/modules/%s' % kv) + comment("Unexpected kernel files at %s" % kmpath) + # Try to find packages concerned + p = Popen(["find", ".", "-name", "*.ko"], cwd=kmpath, + stdout=PIPE, stderr=STDOUT) + r = p.communicate()[0] + if p.returncode == 0: + packs = [] + for km in r.split(): + a = chroot(self.installation0, + 'pacman -Qoq /lib/modules/%s/%s' + % (kv, km)) + + if a: + pack = "-".join(a[0].split()) + if pack not in packs: + packs.append(pack) + comment(" Package: %s" % pack) + + else: + comment("Couldn't determine guilty packages") + + if not query_yn(_("WARNING:" + "\n You seem to have installed a package containing modules" + "\nwhich aren't compatible with your kernel (see log)." + "\nPlease check that this won't cause problems." + "\nMaybe you need the corresponding package for your kernel?" + "\n\n Continue building?")): + return False + + if not self.kversion: + errout(_("Couldn't find kernel modules")) + + comment("Kernel: %s - version: %s" % (self.kname, self.kversion)) + chroot(self.installation0, "depmod %s" % self.kversion) + return True + + + def gen_initramfs(self): + # Fix up larch mkinitcpio.conf for unionfs/aufs + conf = self.overlay + "/etc/mkinitcpio.conf.larch" + if os.path.isfile(conf + "0"): + conf0 = conf + "0" + else: + conf0 = self.installation0 + "/etc/mkinitcpio.conf.larch0" + runcmd('bash -c "sed \'s|___aufs___|%s|g\' <%s >%s"' % (self.ufs, conf0, conf)) + + presets = [os.path.basename(f) for f in glob( + self.installation0 + "/etc/mkinitcpio.d/kernel26*.preset")] + if len(presets) != 1: + errout(_("Couldn't find usable mkinitcpio preset: %s") % + self.installation0 + "/etc/mkinitcpio.d/kernel26*.preset") + + # Save original preset file (unless a '*.larchsave' is already present) + idir = self.installation0 + "/etc/mkinitcpio.d" + oldir = self.overlay + "/etc/mkinitcpio.d" + if not os.path.isfile("%s/%s.larchsave" % (idir, presets[0])): + runcmd("mkdir -p %s" % oldir) + runcmd("cp %s/%s %s/%s.larchsave" % + (idir, presets[0], oldir, presets[0])) + + # Adjust larch.preset file for custom kernels + runcmd('bash -c "sed \'s|___|%s|\' <%s/larch.preset0 >%s/larch.preset"' + % (presets[0].rsplit(".", 1)[0], idir, oldir)) + + # Replace 'normal' preset in overlay + runcmd("cp %s/larch.preset %s/%s" % (oldir, oldir, presets[0])) + + # Generate initramfs + return chroot(self.installation0, + "mkinitcpio -k %s -c %s -g %s" % + (self.kversion, + CHROOT_DIR_OVERLAY + "/etc/mkinitcpio.conf.larch", + CHROOT_DIR_MEDIUM + "/boot/larch.img")) + + +def encryptPW(pw): + """Encrypt a password - needed for user account generation. + """ + salt = '$1$' + for i in range(8): + salt += random.choice("./0123456789abcdefghijklmnopqrstuvwxyz" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ") + return crypt.crypt(pw, salt) + + + +if __name__ == "__main__": + start_translator() + + from optparse import OptionParser, OptionGroup + parser = OptionParser(usage=_("usage: %prog [options]")) + + parser.add_option("-p", "--profile", action="store", type="string", + default="", dest="profile", + help=_("Profile: 'user:profile-name' or path to profile directory")) + parser.add_option("-i", "--installation-dir", action="store", type="string", + default="", dest="idir", + help=_("Path to directory to be larchified (default %s)") + % INSTALLATION) + parser.add_option("-s", "--slave", action="store_true", dest="slave", + default=False, help=_("Run as a slave from a controlling program" + " (e.g. from a gui)")) + parser.add_option("-q", "--quiet", action="store_true", dest="quiet", + default=False, help=_("Suppress output messages, except errors" + " (no effect if -s specified)")) + parser.add_option("-o", "--oldsqf", action="store_true", dest="oldsqf", + default=False, help=_("Reuse previously generated system.sqf")) + parser.add_option("-l", "--oldlocales", action="store_true", + dest="oldlocales", default=False, + help=_("Reuse previously generated locales")) + parser.add_option("-f", "--force", action="store_true", dest="force", + default=False, help=_("Don't ask for confirmation")) + + (options, args) = parser.parse_args() +# Should there be arguments? + + if os.getuid() != 0: + print _("This application must be run as root") + sys.exit(1) + init('larchify', options) + builder = Builder(options) + if builder.build(options): + sys.exit(0) + else: + sys.exit(1) diff --git a/build_tools/l7/larch-live_iso b/build_tools/l7/larch-live_iso new file mode 120000 index 0000000..138431d --- /dev/null +++ b/build_tools/l7/larch-live_iso @@ -0,0 +1 @@ +larch0/cli/live_iso.py
\ No newline at end of file diff --git a/build_tools/l7/larch-live_part b/build_tools/l7/larch-live_part new file mode 120000 index 0000000..51a3813 --- /dev/null +++ b/build_tools/l7/larch-live_part @@ -0,0 +1 @@ +larch0/cli/live_part.py
\ No newline at end of file diff --git a/build_tools/l7/larch-profiles-7.2.0-1-any.pkg.tar.gz b/build_tools/l7/larch-profiles-7.2.0-1-any.pkg.tar.gz Binary files differnew file mode 100644 index 0000000..aeaa92f --- /dev/null +++ b/build_tools/l7/larch-profiles-7.2.0-1-any.pkg.tar.gz diff --git a/build_tools/l7/larch-setup b/build_tools/l7/larch-setup new file mode 100644 index 0000000..5b440a7 --- /dev/null +++ b/build_tools/l7/larch-setup @@ -0,0 +1,127 @@ +#! /bin/bash +# +# larch-setup +# +# Author: Michael Towers <gradgrind[at]online[dot]de> +# +# This file is part of the larch project. +# +# larch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# larch is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with larch; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#---------------------------------------------------------------------------- +# 2010.04.11 + +REPO="ftp://ftp.berlios.de/pub/larch/larch7.2/i686" +#REPO=file://$( readlink -f larchrepo ) + +if [ "$1" = "-h" ]; then + echo "larch-setup -h" + echo " # Display this information." + echo "larch-setup" + echo " # Set up a larch build environment in the current directory." + echo + echo "This script unpacks larch, so that it" + echo "can be run from this directory, without installing." + echo "It also generates appropriate symlinks." + echo + echo "TODO:" + echo "If there is no pacman in the PATH, a package containing a" + echo "pacman binary and the libraries and configuration files it needs" + echo "will be downloaded from the larch site and unpacked in the" + + echo" larch/run directory." + echo "Also repo-add is extracted there and a pacman.conf is generated in" + echo "the current directory, presenting a dialog for choosing the package" + echo "server." + echo "You can use an existing pacman.conf by placing this in the current" + echo "directory." + echo + exit +fi + +# Get path to this directory, via the location of this script +fullpath="$( readlink -f $0 )" +scriptdir="$( dirname ${fullpath} )" + +# Just in case ... +cd ${scriptdir} + +if [ -d larch0 ]; then + echo "ERROR: larch0 directory exists already" + exit 1 +fi + +fetch () +{ + if [ -n "$( echo ${REPO} | grep "file://" )" ]; then + base="$( echo ${REPO} | sed "s|file://||" )" + cp ${base}/$1 . + else + wget ${REPO}/$1 + fi +} + +rm -f *.pkg.tar.gz +rm -rf db +mkdir db +cd db +fetch larch.db.tar.gz +tar -xzf larch.db.tar.gz +cd ${scriptdir} +d=$( ls db | grep "^larch-7" ) +larchpak=$( grep -A 1 -e "%FILENAME%" db/${d}/desc | grep -v "%" ) +fetch ${larchpak} +#d=$( ls db | grep "^uipi-" ) +#larchpak=$( grep -A 1 -e "%FILENAME%" db/${d}/desc | grep -v "%" ) +#fetch ${larchpak} + +rm -rf tmp +mkdir tmp +tar -xzf larch-7*.pkg.tar.gz -C tmp + +if [ "$1" != "-p" ]; then + d=$( ls db | grep "^larch-profiles-" ) + larchpak=$( grep -A 1 -e "%FILENAME%" db/${d}/desc | grep -v "%" ) + fetch ${larchpak} + tar -xzf larch-profiles-*.pkg.tar.gz -C tmp +fi + +rm -rf db +mv tmp/opt/apps/larch larch0 +#tar -xzf uipi-*.pkg.tar.gz -C tmp +#mv tmp/usr/bin/quip larch0 +#mv tmp/usr/lib/python*/site-packages/uipi.py larch0/modules + +for s in $( ls tmp/usr/bin ); do + p=$( readlink tmp/usr/bin/${s} ) + d=$( dirname ${p} ) + ln -s larch0/$( basename ${d} )/$( basename ${p}) ${s} +done +rm -rf tmp + +# Check that pacman is available. +if ! which pacman &>/dev/null; then + # Fetch the pacman package from the larch site + fetch pacman-allin.tar.gz + if ! [ -f pacman-allin.tar.gz ]; then + echo "ERROR: couldn't fetch pacman package" + exit 1 + fi + # Extract the package + tar -xzf pacman-allin.tar.gz + cp -a pacman-allin/* larch0 + rm -rf pacman-allin +fi + diff --git a/build_tools/l7/larch0/buildscripts/cleardir b/build_tools/l7/larch0/buildscripts/cleardir new file mode 100755 index 0000000..a90f0f7 --- /dev/null +++ b/build_tools/l7/larch0/buildscripts/cleardir @@ -0,0 +1,15 @@ +#!/bin/sh + +if cat /proc/mounts | grep " $1/sys" &>/dev/null; then + umount -l "$1/sys" +fi +if cat /proc/mounts | grep " $1/proc" &>/dev/null; then + umount -l "$1/proc" +fi + +if ls "$1" &>/dev/null; then + rm -rf "$1/*" +fi +for x in $( ls -A "$1" ); do + rm -rf "$1/$x" +done diff --git a/build_tools/l7/larch0/buildscripts/larch-hosts b/build_tools/l7/larch0/buildscripts/larch-hosts new file mode 100755 index 0000000..5c57ca1 --- /dev/null +++ b/build_tools/l7/larch0/buildscripts/larch-hosts @@ -0,0 +1,28 @@ +#!/bin/bash +# +# larch-hosts - Add hostname to /etc/hosts file (in overlay) +# +#2009.08.26 + + +# $1: path to system to be larchified ("" if running system) +# $2: path to temporary overlay directory (where the overlay is being built) + +INSTLDIR="$1" +OVERLAYDIR="$2" + +hosts="${OVERLAYDIR}/etc/hosts" +if ! [ -f ${hosts} ]; then + # If not provided in the profile rootoverlay, get it from the installation + cp ${INSTLDIR}/etc/hosts ${OVERLAYDIR}/etc +fi + +HOSTNAME="UNKNOWN" +if [ -f ${OVERLAYDIR}/etc/rc.conf ]; then + . ${OVERLAYDIR}/etc/rc.conf +else + . ${INSTLDIR}/etc/rc.conf +fi + +lh="127.0.0.1 localhost.localdomain localhost " +sed -i "s|^127\.0\.0\.1.*|${lh}${HOSTNAME}|" ${hosts} diff --git a/build_tools/l7/larch0/buildscripts/larch-locales b/build_tools/l7/larch0/buildscripts/larch-locales new file mode 100755 index 0000000..254e037 --- /dev/null +++ b/build_tools/l7/larch0/buildscripts/larch-locales @@ -0,0 +1,45 @@ +#!/bin/bash +# +# larch-locales - Generate glibc locales to an overlay (a slightly tricky business) +# +#2009.08.26 + +# If there is a 'locale.gen' file in the profile (rootoverlay/etc/locale.gen) +# it will be used for the generation, otherwise the existing '/etc/locale.gen' +# (in the system to be larchified!) will be used, which is empty by default. + +# $1: path to system to be larchified ("" if running system) +# $2: path to temporary overlay directory (where the overlay is being built) + +INSTLDIR="$1" +OVERLAYDIR="$2" + +mkdir -p ${OVERLAYDIR}/usr/lib +echo +echo "********** Generating locales to an overlay **********" +echo +rm -f ${INSTLDIR}/etc/locale.gen_new +rm -rf ${INSTLDIR}/usr/lib/locale.save +if [ -f ${OVERLAYDIR}/etc/locale.gen ]; then + mv -f ${INSTLDIR}/etc/locale.gen ${INSTLDIR}/etc/locale.gen_old + cp ${OVERLAYDIR}/etc/locale.gen ${INSTLDIR}/etc + cp -a ${INSTLDIR}/usr/lib/locale ${INSTLDIR}/usr/lib/locale.save +fi + +if [ -n "${INSTLDIR}" ]; then + chroot ${INSTLDIR} /usr/sbin/locale-gen +else + /usr/sbin/locale-gen +fi + +rm -rf ${OVERLAYDIR}/usr/lib/locale +cp -a ${INSTLDIR}/usr/lib/locale ${OVERLAYDIR}/usr/lib +# /usr/lib/locale will be excluded from system.sqf + +# Restore old locale files +if [ -f ${INSTLDIR}/etc/locale.gen_old ]; then + mv -f ${INSTLDIR}/etc/locale.gen_old ${INSTLDIR}/etc/locale.gen + rm -rf ${INSTLDIR}/usr/lib/locale + mv ${INSTLDIR}/usr/lib/locale.save ${INSTLDIR}/usr/lib/locale +fi + diff --git a/build_tools/l7/larch0/buildscripts/larch-mbr-grub b/build_tools/l7/larch0/buildscripts/larch-mbr-grub new file mode 100755 index 0000000..7197ef2 --- /dev/null +++ b/build_tools/l7/larch0/buildscripts/larch-mbr-grub @@ -0,0 +1,63 @@ +#!/bin/bash +# +# larch-mbr-grub - Set up a grub boot +# +#2009.08.12 + + +# $1: path to system to be larchified ("/" if running system) +# $2: larch partition + +INSTLDIR="$1" +if [ "${INSTLDIR}" = "/" ]; then + INSTLDIR="" +fi +DEVICE="$2" + +dev=${DEVICE:0:8} +part=${DEVICE:8} + +# Convert the device and partion to grub syntax +grubdevice () +{ + ## The contents of DEVICE.map look something like this: + #(fd0) /dev/fd0 + #(hd0) /dev/hda + #(hd1) /dev/sda + gdev="$( cat ${INSTLDIR}${dmap} | grep "${dev}" | cut -f1 | tr -d "()" )" + gpart=$(( ${part} - 1 )) + echo "#Installing GRUB to (${gdev}), root (${gdev},${gpart})" +} + +dmap=/tmp/DEVICE.map +rm -f ${INSTLDIR}${dmap} +if [ -n "${INSTLDIR}" ]; then + # First try to get a device mapping + mount --bind /dev ${INSTLDIR}/dev + echo "quit" | chroot ${INSTLDIR} grub --no-floppy --device-map=${dmap} --batch + grubdevice + # Now actually install grub + # As far as I can tell, the extra options to grub are not needed here + chroot ${INSTLDIR} grub --batch <<EOT +root (${gdev},${gpart}) +setup (${gdev}) +quit +EOT + umount ${INSTLDIR}/dev +else + # First try to get a device mapping + echo "quit" | grub --no-floppy --device-map=${dmap} --batch + grubdevice + # Now actually install grub + # As far as I can tell, the extra options to grub are not needed here + grub --batch <<EOT +root (${gdev},${gpart}) +setup (${gdev}) +quit +EOT +fi +rm -f ${INSTLDIR}${dmap} + + + + diff --git a/build_tools/l7/larch0/cd-root/boot0/memtest b/build_tools/l7/larch0/cd-root/boot0/memtest Binary files differnew file mode 100644 index 0000000..b602352 --- /dev/null +++ b/build_tools/l7/larch0/cd-root/boot0/memtest diff --git a/build_tools/l7/larch0/cd-root/grub0/colors.lst b/build_tools/l7/larch0/cd-root/grub0/colors.lst new file mode 100644 index 0000000..3f544ce --- /dev/null +++ b/build_tools/l7/larch0/cd-root/grub0/colors.lst @@ -0,0 +1,36 @@ +#color schemes - ganked from SGD ( http://freshmeat.net/projects/supergrub/?branch_id=62132&release_id=236631 ) +# TODO change these and make some more... specifically an "arch" theme +timeout 300 +default 0 +color light-blue/blue black/light-grey +splashimage=/boot/grub/splash.xpm.gz + +title << Back to Main Menu +configfile /boot/grub/menu.lst + +title Barlond +color white/cyan yellow/blue + +title Barlond2 +color white/blue yellow/cyan + +title Simple Black +color light-gray/black yellow/blue + +title Matrix +color green/black light-green/green + +title Dalton Bros. +color red/green green/red + +title Debian +color cyan/blue white/blue + +title BW +color light-gray/black black/light-gray + +title BW Inverse +color black/light-gray + +title SGD Non Default +color black/cyan yellow/black diff --git a/build_tools/l7/larch0/cd-root/grub0/help.lst b/build_tools/l7/larch0/cd-root/grub0/help.lst new file mode 100644 index 0000000..6e74187 --- /dev/null +++ b/build_tools/l7/larch0/cd-root/grub0/help.lst @@ -0,0 +1,16 @@ +# Help files must be exactly 23 lines long. +timeout 300 +default 0 +color light-blue/blue black/light-grey +splashimage=/boot/grub/splash.xpm.gz + +title << Back to main menu +configfile /boot/grub/menu.lst + +title HOW-TO: Boot an existing system +cat /boot/grub/help/bootexisting.txt +pause Press enter to continue... + +title HOW-TO: Contribute to this help +cat /boot/grub/help/contrib.txt +pause Press enter to continue... diff --git a/build_tools/l7/larch0/cd-root/grub0/help/bootexisting.txt b/build_tools/l7/larch0/cd-root/grub0/help/bootexisting.txt new file mode 100644 index 0000000..881f3e8 --- /dev/null +++ b/build_tools/l7/larch0/cd-root/grub0/help/bootexisting.txt @@ -0,0 +1,23 @@ +HOWTO: Boot an existing install + +Select "More Options" from the main menu. +Move the cursor to "[EDIT ME] Boot an existing linux install" +Press "e" + +At this point you will see the following: + root (hd0,0) + kernel /vmlinuz26 root=/dev/hda3 ro + initrd /kernel26.img + +This needs to be changed to accomodate your hardware. + +The first line should be changed to indicate where your boot medium resides. + "(hd0,0)" is the first partition on the first hard drive (hda1) - change these + numbers to indicate the partition containing your /boot directory. + +The second line should be changed to point to your kernel. If the line above +points to a partition _only_ containing /boot, then /vmlinuz26 is fine. +Otherwise, change this to /boot/vmlinuz. root= should be changed to match the +partition for your root filesystem. Other kernel parameters can be added here. + + diff --git a/build_tools/l7/larch0/cd-root/grub0/help/contrib.txt b/build_tools/l7/larch0/cd-root/grub0/help/contrib.txt new file mode 100644 index 0000000..5c79176 --- /dev/null +++ b/build_tools/l7/larch0/cd-root/grub0/help/contrib.txt @@ -0,0 +1,23 @@ +HOWTO: Contribute to these help files + +This help is rather simplistic. +In order to provide help files or translations you simply need to make a text +file. Formatting is important (due to grub limitations). The files MUST be 80 +characters wide, and 23 lines long. Any more, and your formatting will be +corrupted when viewing the help. Please note that if your help is short, it is +worthwhile to pad with empty lines, up to 23 lines. + + + + + + + + + + + + + + + diff --git a/build_tools/l7/larch0/cd-root/grub0/keyboards.lst b/build_tools/l7/larch0/cd-root/grub0/keyboards.lst new file mode 100644 index 0000000..5237c1a --- /dev/null +++ b/build_tools/l7/larch0/cd-root/grub0/keyboards.lst @@ -0,0 +1,111 @@ +#keyboard layouts - ganked from SGD ( http://freshmeat.net/projects/supergrub/?branch_id=62132&release_id=236631 ) +# TODO add other languages +timeout 300 +default 0 +color light-blue/blue black/light-grey +splashimage=/boot/grub/splash.xpm.gz + +title << Back to Main Menu +configfile /boot/grub/menu.lst + +title Default layout +setkey + +title German layout +setkey y z +setkey z y +setkey Y Z +setkey Z Y +setkey equal parenright +setkey parenright parenleft +setkey parenleft asterisk +setkey doublequote at +setkey plus bracketright +setkey minus slash +setkey slash ampersand +setkey ampersand percent +setkey percent caret +setkey underscore question +setkey question underscore +setkey semicolon less +setkey less numbersign +setkey numbersign backslash +setkey colon greater +setkey greater bar +setkey asterisk braceright + + +title Spanish layout +setkey +setkey slash ampersand +setkey ampersand caret +setkey caret braceleft +setkey asterisk braceright +setkey parenleft asterisk +setkey parenright parenleft +setkey minus slash +setkey equal parenright +setkey quote minus +setkey underscore question +setkey question underscore +setkey braceleft quote +setkey braceright backslash +setkey colon greater +setkey greater bar +setkey doublequote at +setkey backslash backquote +setkey less backslash +setkey semicolon less +setkey plus colon +setkey at semicolon + +title French layout +setkey +setkey less backquote +setkey greater tilde +setkey ampersand 1 +setkey 1 exclam +setkey tilde 2 +setkey 2 at +setkey doublequote 3 +setkey 3 numbersign +setkey quote 4 +setkey 4 dollar +setkey parenleft 5 +setkey 5 percent +setkey minus 6 +setkey 6 caret +setkey backquote 7 +setkey 7 ampersand +setkey underscore 8 +setkey 8 asterisk +setkey backslash 9 +setkey 9 parenleft +setkey at 0 +setkey 0 parenright +setkey parenright minus +setkey numbersign underscore +setkey a q +setkey A Q +setkey z w +setkey Z W +setkey caret bracketleft +setkey dollar bracketright +setkey q a +setkey Q A +setkey m semicolon +setkey M colon +setkey bracketleft quote +setkey percent doublequote +setkey asterisk backslash +setkey bracketright bar +setkey w z +setkey W Z +setkey comma m +setkey question M +setkey semicolon comma +setkey period less +setkey colon period +setkey slash greater +setkey exclam slash +setkey bar question diff --git a/build_tools/l7/larch0/cd-root/grub0/menu.lst b/build_tools/l7/larch0/cd-root/grub0/menu.lst new file mode 100644 index 0000000..378d46e --- /dev/null +++ b/build_tools/l7/larch0/cd-root/grub0/menu.lst @@ -0,0 +1,25 @@ +timeout 5 +default 0 +color light-blue/blue black/light-grey +splashimage=/boot/grub/splash.xpm.gz + +###LARCH + +title Tools... +configfile /boot/grub/tools.lst + +title Grub Settings... +configfile /boot/grub/settings.lst + +title View Help... +configfile /boot/grub/help.lst + +title More Options... +configfile /boot/grub/more.lst + +title Shutdown the Computer +halt + +title Reboot the Computer +reboot + diff --git a/build_tools/l7/larch0/cd-root/grub0/more.lst b/build_tools/l7/larch0/cd-root/grub0/more.lst new file mode 100644 index 0000000..8fd5f7e --- /dev/null +++ b/build_tools/l7/larch0/cd-root/grub0/more.lst @@ -0,0 +1,30 @@ +timeout 300 +default 0 +color light-blue/blue black/light-grey +splashimage=/boot/grub/splash.xpm.gz + +title << Back to Main Menu +configfile /boot/grub/menu.lst + +title [EXPERIMENTAL] Attempt existing Linux detection +configfile /boot/grub/tryboot.lst + +title [EDIT ME] Diskless Boot (PXE / BOOTP) +#TODO wtf? +root (nd) +kernel /vmlinuz26 ip=dhcp root=/dev/nfs nfsroot=192.168.1.2:/boot/dir + +title [EDIT ME] NFS Root Boot +root (cd) +kernel /vmlinuz26 ip=dhcp root=/dev/nfs nfsroot=192.168.1.2:/boot/dir + +title [EDIT ME] Boot Existing Linux Install +root (hd0,0) +kernel /vmlinuz26 root=/dev/hda3 ro +initrd /kernel26.img + +title [EDIT ME] Boot Existing Windows Install +rootnoverify (hd0,0) +makeactive +chainloader +1 + diff --git a/build_tools/l7/larch0/cd-root/grub0/settings.lst b/build_tools/l7/larch0/cd-root/grub0/settings.lst new file mode 100644 index 0000000..f8f8c95 --- /dev/null +++ b/build_tools/l7/larch0/cd-root/grub0/settings.lst @@ -0,0 +1,13 @@ +timeout 300 +default 0 +color light-blue/blue black/light-grey +splashimage=/boot/grub/splash.xpm.gz + +title << Back to Main Menu +configfile /boot/grub/menu.lst + +title Keyboard settings +configfile /boot/grub/keyboards.lst + +title Color settings +configfile /boot/grub/colors.lst diff --git a/build_tools/l7/larch0/cd-root/grub0/tools.lst b/build_tools/l7/larch0/cd-root/grub0/tools.lst new file mode 100644 index 0000000..d226992 --- /dev/null +++ b/build_tools/l7/larch0/cd-root/grub0/tools.lst @@ -0,0 +1,14 @@ +timeout 300 +default 0 +color light-blue/blue black/light-grey +splashimage=/boot/grub/splash.xpm.gz + +title << Back to Main Menu +configfile /boot/grub/menu.lst + +title Run memtest (Memory Testing) +kernel /boot/memtest + +title Install GRUB to hd0 MBR +root (hd0,0) +setup (hd0) diff --git a/build_tools/l7/larch0/cd-root/isolinux0/bkgd.jpg b/build_tools/l7/larch0/cd-root/isolinux0/bkgd.jpg Binary files differnew file mode 100644 index 0000000..b45b71f --- /dev/null +++ b/build_tools/l7/larch0/cd-root/isolinux0/bkgd.jpg diff --git a/build_tools/l7/larch0/cd-root/isolinux0/isolinux.cfg b/build_tools/l7/larch0/cd-root/isolinux0/isolinux.cfg new file mode 100644 index 0000000..a868f72 --- /dev/null +++ b/build_tools/l7/larch0/cd-root/isolinux0/isolinux.cfg @@ -0,0 +1,13 @@ +default vesamenu.c32 +prompt 0 +timeout 50 + +MENU BACKGROUND bkgd.jpg + +MENU TITLE larch live CD + +###LARCH - the larch boot lines will be inserted here + +label memtest +MENU LABEL Memory tester +kernel /boot/memtest diff --git a/build_tools/l7/larch0/cli/archin.py b/build_tools/l7/larch0/cli/archin.py new file mode 100755 index 0000000..7e00831 --- /dev/null +++ b/build_tools/l7/larch0/cli/archin.py @@ -0,0 +1,378 @@ +#!/usr/bin/env python +# +# archin.py +# +# (c) Copyright 2010 Michael Towers (larch42 at googlemail dot com) +# +# This file is part of the larch project. +# +# larch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# larch is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with larch; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#---------------------------------------------------------------------------- +# 2010.07.19 + +# This is a command line script to perform an Arch Linux installation +# based on a list of packages. All needed parameters are passed as options. + +import os +from glob import glob +from config import * +from backend import * + +class Installation: + def __init__(self, options): + self.options = options + self.installation_dir = get_installation_dir() + if self.installation_dir == '/': + errout(_("Operations on '/' are not supported ...")) + + self.profile_dir = get_profile() + self.pacman_cmd = self.make_pacman_command() + self.make_pacman_conf() + + + def make_pacman_command(self): + """Construct pacman command. Return the command, including options. + This includes options for installation path, cache directory and + for suppressing the progress bar. It assumes a temporary location + for pacman.conf, which must also be set up. + If there is no pacman executable in the system PATH, check that + it is available in the larch directory. + """ + pacman = runcmd('bash -c "which pacman || echo _FAIL_"')[1][-1].strip() + if pacman == '_FAIL_': + # If the host is not Arch, there will probably be no pacman + # (if there is some other program called 'pacman' that's + # a real spanner in the works). + # The alternative is to provide it in the larch directory. + pacman = base_dir + '/pacman' + if not os.path.isfile(pacman): + errout(_("No pacman executable found")) + + pacman += (' -r %s --config %s --noconfirm' + % (self.installation_dir, PACMAN_CONF)) + if self.options.noprogress: + pacman += ' --noprogressbar' + if self.options.cache: + pacman += ' --cachedir ' + self.options.cache + return pacman + + + def make_pacman_conf(self, final=False): + """Construct the pacman.conf file used by larch. + To make it a little easier to manage upstream changes to the default + pacman.conf, a separate file (pacman.conf.repos) is used to specify + the repositories to use. The contents of this file are used to modify + the basic pacman.conf file, which may be the default version or one + provided in the profile. + The 'final' parameter determines whether the version for the resulting + live system (True) or for the installation process (False) is + generated. If generating the installation version, it is possible + to specify alternative repositories, via the 'repofile' option, + which allows the pacman.conf used for the installation to be + different from the version in the resulting live system. + The return value is a list of the names of the repositories which + are included. + It is also possible to specify just a customized mirrorlist for the + installation by placing it in the working directory. + """ + # Allow use of '*platform*' in pacman.conf.repos + platform = os.uname()[4] + if platform != 'x86_64': + platform = 'i686' + + # Get pacman.conf header part + pc0 = self.profile_dir + '/pacman.conf.options' + if not os.path.isfile(pc0): + pc0 = base_dir + '/data/pacman.conf' + pacmanconf = self.pacmanoptions(readfile(pc0)) + + # Get file with repository entries + pc1 = self.profile_dir + '/pacman.conf.repos' + if not os.path.isfile(pc1): + pc1 = base_dir + '/data/pacman.conf.repos' + if self.options.repofile and not final: + pc1 = os.path.realpath(self.options.repofile) + + # Get repository path + if final: + default = 'Include = /etc/pacman.d/mirrorlist' + else: + mlist = cwd + '/mirrorlist' + if not os.path.isfile(mlist): + mlist = '/etc/pacman.d/mirrorlist' + if not os.path.isfile(mlist): + mlist = base_dir + '/data/mirrorlist' + default = 'Include = ' + mlist + + # Read repository entries + repos = [] + for line in readfile(pc1).splitlines(): + line = line.strip() + if (not line) or (line[0] == '#'): + continue + r, s = [t.strip() for t in line.split(':', 1)] + repos.append(r) + s = s.replace('*default*', default) + pacmanconf += ('\n[%s]\n%s\n' + % (r, s.replace('*platform*', platform))) + + + writefile(pacmanconf, self.installation_dir + '/etc/pacman.conf' + if final else PACMAN_CONF) + return repos + + + def install(self): + """Clear the chosen installation directory and install the base + set of packages, together with any additional ones listed in the + file 'addedpacks' (in the profile), removing the packages in + 'vetopacks' from the list. + """ + if not query_yn(_("Install Arch to '%s'?") % self.installation_dir): + return False + # Can't delete the whole directory because it might be a mount point + if os.path.isdir(self.installation_dir): + if script('cleardir %s' % self.installation_dir): + return False + + # Ensure installation directory exists and check that device nodes + # can be created (creating /dev/null is also a workaround for an + # Arch bug - which may have been fixed, but this does no harm) + if not (runcmd('bash -c "mkdir -p %s/{dev,proc,sys}"' + % self.installation_dir)[0] + and runcmd('mknod -m 666 %s/dev/null c 1 3' + % self.installation_dir)[0]): + errout(_("Couldn't write to the installation path (%s)") + % self.installation_dir) + if not runcmd('bash -c "echo test >%s/dev/null"' + % self.installation_dir)[0]: + errout(_("The installation path (%s) is mounted 'nodev'.") + % self.installation_dir) + + # I should also check that it is possible to run stuff in the + # installation directory. + runcmd('bash -c "cp $( which echo ) %s"' % self.installation_dir) + if not runcmd('%s/echo "yes"' % self.installation_dir)[0]: + errout(_("The installation path (%s) is mounted 'noexec'.") + % self.installation_dir) + runcmd('rm %s/echo' % self.installation_dir) + + # Fetch package database + runcmd('mkdir -p %s/var/lib/pacman' % self.installation_dir) + self.refresh() + + # Get list of vetoed packages. + self.packages = [] + self.veto_packages = [] + self.add_packsfile(self.profile_dir, 'vetopacks', must=False) + self.veto_packages = self.packages + + # Include 'required' packages (these can still be vetoed, but + # in some cases that will mean a larch system cannot be built) + self.packages = [] + self.add_packsfile(base_dir + '/data', 'requiredpacks') + + # Add additional packages and groups, from 'addedpacks' file. + self.add_packsfile(self.profile_dir, 'addedpacks') + + # Now do the actual installation. + ok = self.pacmancall('-Sf', ' '.join(self.packages)) + if not ok: + errout(_("Package installation failed")) + + # Some chroot scripts might need /etc/mtab + runcmd('bash -c ":> %s/etc/mtab"' % self.installation_dir) + + # Build the final version of pacman.conf + self.make_pacman_conf(True) + comment(" *** %s ***" % _("Arch installation completed")) + return True + + + def add_packsfile(self, dir, packs_file, must=True): + path = dir + '/' + packs_file + if must and not os.path.isfile(path): + errout(_("No '%s' file") % path) + fh = open(path) + for line in fh: + line = line.strip() + if line and (line[0] != '#'): + if line[0] == '*': + self.add_group(line[1:].split()[0]) + elif line[0] == '+': + # Include directive + line = line[1:].split()[0] + if line[0] != '/': + line = dir + '/' + line + d, pf = line.rsplit('/', 1) + if not d: + errout(_("Invalid package file include: %s")) + self.add_packsfile(d, pf) + elif line.startswith('!!!'): + # Ignore everything (!) entered previously. + # Allows requiredpacks to be overridden in addedpacks. + self.packages = [] + else: + line = line.split()[0] + if ((line not in self.packages) + and (line not in self.veto_packages)): + self.packages.append(line) + fh.close() + + + def add_group(self, gname): + """Add the packages belonging to a group to the installaion list, + removing any in the veto list. + """ + # In the next line the call could be done as a normal user. + for line in runcmd('%s -Sg %s' % (self.pacman_cmd, gname))[1]: + l = line.split() + if l and (l[0] == gname) and (l[1] not in self.veto_packages): + self.packages.append(l[1]) + + + def refresh(self): + """This updates or creates the pacman-db in the installation. + This is done using using 'pacman ... -Sy' together with the + customized pacman.conf file. + """ + if not runcmd(self.pacman_cmd + ' -Sy', + filter=pacman_filter_gen())[0]: + errout(_("Couldn't synchronize pacman database (pacman -Sy)")) + return True + + + def pacmancall(self, op, arg): + """Mount-bind the sys and proc directories before calling the + pacman command built by make_pacman_command to perform operation + 'op' (e.g. '-S') with argument(s) 'arg' (a string). + Then unmount sys and proc and return True if the command succeeded. + """ + # (a) Prepare the destination environment (bind mounts) + mount("/sys", "%s/sys" % self.installation_dir, "--bind") + mount("/proc", "%s/proc" % self.installation_dir, "--bind") + + # (b) Call pacman + ok = runcmd("%s %s %s" % (self.pacman_cmd, op, arg), + filter=pacman_filter_gen())[0] + + # (c) Remove bound mounts + unmount(("%s/sys" % self.installation_dir, + "%s/proc" % self.installation_dir)) + return ok + + + def pacmanoptions(self, text): + """A filter for pacman.conf to remove the repository info. + """ + texto = "" + block = "" + for line in text.splitlines(): + block += line + "\n" + if line.startswith("#["): + break + if line.startswith("[") and not line.startswith("[options]"): + break + if not line.strip(): + texto += block + block = "" + return texto + + + def sync(self, *packs): + return self.pacmancall('-S', ' '.join(packs)) + + + def update(self, *files): + return self.pacmancall('-U', ' '.join(files)) + + + def remove(self, *packs): + return self.pacmancall('-Rs', ' '.join(packs)) + + + +if __name__ == "__main__": + start_translator() + cwd = os.getcwd() + + operations = 'install|sync|update|remove|refresh' + from optparse import OptionParser, OptionGroup + parser = OptionParser(usage=(_("usage: %%prog [options] %s [packages]") + % operations)) + + parser.add_option("-p", "--profile", action="store", type="string", + default="", dest="profile", + help=_("Profile: 'user:profile-name' or path to profile directory")) + parser.add_option("-i", "--installation-dir", action="store", type="string", + default="", dest="idir", + help=_("Path to directory to be larchified (default %s)") + % INSTALLATION) + parser.add_option("-s", "--slave", action="store_true", dest="slave", + default=False, help=_("Run as a slave from a controlling program" + " (e.g. from a gui)")) + parser.add_option("-q", "--quiet", action="store_true", dest="quiet", + default=False, help=_("Suppress output messages, except errors" + " (no effect if -s specified)")) + + + parser.add_option("-f", "--force", action="store_true", dest="force", + default=False, help=_("Don't ask for confirmation")) + + parser.add_option("-r", "--repofile", action="store", type="string", + default="", dest="repofile", + help=_("Supply a substitute repository list (pacman.conf.repos)" + " for the installation only")) + parser.add_option("-c", "--cache-dir", action="store", type="string", + default="", dest="cache", + help=_("pacman cache directory (default /var/cache/pacman/pkg)")) + parser.add_option("-n", "--noprogress", action="store_true", + dest="noprogress", + default=False, help=_("Don't show pacman's progress bar")) +## I think pacman is going to get support for something like '$arch', at +## which stage I could again consider architecture switching support in larch. +# parser.add_option("-a", "--arch", action="store", type="string", +# default="", dest="arch", +# help=_("processor architecture (x86_64|i686) - defaults to" +# " that of the host." +# " This is an untested feature, which is probably only partially" +# " implemented and may well not work.")) + + (options, args) = parser.parse_args() + if not args: + print _("You must specify which operation to perform:\n") + parser.print_help() + sys.exit(1) + + if os.getuid() != 0: + print _("This application must be run as root") + sys.exit(1) + + init('archin', options) + op = args[0] + if op not in operations.split('|'): + print (_("Invalid operation: '%s'\n") % op) + parser.print_help() + sys.exit(1) + + installation = Installation(options) + method = getattr(installation, op) + + if method(*args[1:]): + sys.exit(0) + else: + sys.exit(1) + diff --git a/build_tools/l7/larch0/cli/backend.py b/build_tools/l7/larch0/cli/backend.py new file mode 100644 index 0000000..95b01bd --- /dev/null +++ b/build_tools/l7/larch0/cli/backend.py @@ -0,0 +1,444 @@ +# backend.py - for the cli modules: handles processes and io +# +# (c) Copyright 2010 Michael Towers (larch42 at googlemail dot com) +# +# This file is part of the larch project. +# +# larch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# larch is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with larch; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#---------------------------------------------------------------------------- +# 2010.07.14 + +# There was also the vague idea of a web interface, using a sort of state- +# based approach. Connecting to a running larch process would then require +# the ability to get the logging history, but presumably not the whole +# history on every ui update, which would need to be incremental. +# The logging function would need to be modified to accommodate this. + +import os, sys, signal, atexit, __builtin__ +import traceback, pwd +from subprocess import Popen, PIPE, STDOUT +import pexpect +try: + import json as serialize +except: + import simplejson as serialize +from config import * + +def init(app, options, app_quit=None): + global _options, _quit_function, _log, _controlled, _dontask, _quiet + _options = options + _quit_function = app_quit + _controlled = options.slave + _dontask = options.force + _log = None + _quiet = False if _controlled else options.quiet + + atexit.register(sys_quit) + + + def sigint(num, frame): + """A handler for SIGINT. Tidy up properly and quit. + """ + errout("INTERRUPTED - killing subprocesses", 0) + if _sub_process and _sub_process.pid: + Popen(["pkill", "-g", str(_sub_process.pid)], + stdout=PIPE).communicate() + errout("QUITTING", 2) + signal.signal(signal.SIGINT, sigint) + + + # Check no other instance of the script is running + if os.path.isfile(LOCKFILE): + app0 = readfile(LOCKFILE) + if not query_yn(_( + "larch (%s) seems to be running already." + "\nIf you are absolutely sure this is not the case," + "\nyou may continue. Otherwise you should cancel." + "\n\nShall I continue?") % app0): + sys.exit(102) + writefile(app, LOCKFILE) + _log = open(LOGFILE + app, 'w') + + # For systems without /sbin and /usr/sbin in the normal PATH + p = os.environ['PATH'] + ps = p.split(':') + for px in ('/sbin', '/usr/sbin'): + if px not in ps: + p = px + ':' + p + os.environ['PATH'] = p + + +def _out(text, force=False): + """Send the string to standard output. + How it is output depends on the '-s' command line option (whether the + script is being run on the console or as a subprocess of another script). + In the latter case the text will be slightly encoded - to avoid newline + characters - and sent as a single unit. + Otherwise output the lines as they are, but all lines except + the first get a '--' prefix. + """ + lines = text.encode('utf-8').splitlines() + if _log: + _log.write(lines[0] + '\n') + for l in lines[1:]: + _log.write('--' + l + '\n') + + if force or not _quiet: + if _controlled: + sys.stdout.write(serialize.dumps(text) + '\n') + else: + prefix = '' + for line in lines: + sys.stdout.write(prefix + line + '\n') + prefix = '--' + sys.stdout.flush() + + +def sys_quit(): + unmount() + if _quit_function: + _quit_function() + if _errorcount: + _out('!! ' + (_("The backend reported %d failed calls," + " you may want to investigate") % _errorcount)) + if _log: + _log.close() + os.remove(LOCKFILE) + + +def comment(text): + _out('##' + text) + + +def query_yn(message, default=False): + _out('?>' + message) + result = default + if _dontask: + result = True + elif not _quiet: + if _controlled: + result = (raw_input().strip() == '??YES') + + else: + # The character after '_' is the response key + # The default will be capitalized automatically + prompt = _("_yes|_no").split('|') + promptkey = [word[word.index('_') + 1] for word in prompt] + if default: + py = prompt[0].upper() + pn = prompt[1] + else: + py = prompt[0] + pn = prompt[1].upper() + resp = raw_input(" [ %s / %s ]: " % (py, pn)).strip() + if resp: + testkey = promptkey[1] if default else promptkey[0] + resp == resp.lower() + if resp == prompt[0]: + result = True + elif resp == prompt[1]: + result = False + elif testkey in resp: + result = not default + + _out('#>%s' % ('Yes' if result else 'No')) + return result + + +def errout(message="ERROR", quit=1): + _out('!>' + message, True) + if quit: + sys_quit() + os._exit(quit) + + +def error0(message): + errout(message, 0) +__builtin__.error0 = error0 + + +# Catch all unhandled errors. +def errortrap(type, value, tb): + etext = "".join(traceback.format_exception(type, value, tb)) + errout(_("Something went wrong:\n") + etext, 100) +sys.excepthook = errortrap + + +_sub_process = None +_errorcount = 0 +def runcmd(cmd, filter=None): + global _sub_process, _errorcount + _out('>>' + cmd) + _sub_process = pexpect.spawn(cmd) + result = [] + line0 = '' + # A normal end-of-line is '\r\n', so split on '\r' but don't + # process a line until the next character is available. + while True: + try: + line0 += _sub_process.read_nonblocking(size=256, timeout=None) + except: + break + + while True: + lines = line0.split('\r', 1) + if (len(lines) > 1) and lines[1]: + line = lines[0] + line0 = lines[1] + nl = (line0[0] == '\n') + if nl: + # Strip the '\n' + line0 = line0[1:] + if filter: + line = filter(line, nl) + if line == '/*/': + continue + if nl: + line = line.rstrip() + _out('>_' + line) + result.append(line) + else: + # Probably a progress line + if _controlled: + _out('>-' + line) + else: + sys.stdout.write(line + '\r') + sys.stdout.flush() + + else: + break + + _sub_process.close() + rc = _sub_process.exitstatus + ok = (rc == 0) + if not ok: + _errorcount += 1 + _out(('>?%s' % repr(rc)) + ('' if ok else (' $$$ %s $$$' % cmd))) + return (ok, result) + + +def script(cmd): + s = runcmd("%s/%s" % (script_dir, cmd)) + if s[0]: + return "" + else: + return "SCRIPT ERROR: (%s)\n" % cmd + "".join(s[1]) + + +def chroot(ip, cmd, mnts=[], filter=None): + if ip: + for m in mnts: + mount("/" + m, "%s/%s" % (ip, m), "--bind") + cmd = "chroot %s %s" % (ip, cmd) + + s = runcmd(cmd, filter) + + if ip: + unmount(["%s/%s" % (ip, m) for m in mnts]) + + if s[0]: + if s[1]: + return s[1] + else: + return True + return False + + +_mounts = [] +def mount(src, dst, opts=""): + if runcmd("mount %s %s %s" % (opts, src, dst))[0]: + _mounts.append(dst) + return True + return False + + +def unmount(dst=None): + if dst == None: + mnts = list(_mounts) + elif type(dst) in (list, tuple): + mnts = list(dst) + else: + mnts = [dst] + + r = True + for m in mnts: + if runcmd("umount %s" % m)[0]: + _mounts.remove(m) + else: + r = False + return r + + +def get_installation_dir(): + return os.path.realpath(_options.idir if _options.idir + else INSTALLATION) + + +def get_profile(): + """Get the absolute path to the profile folder given its path in any + acceptable form, including 'user:profile-name' + """ + pd = (_options.profile if _options.profile + else base_dir + '/profiles/default') + p = pd.split(':') + if len(p) == 1: + pd = os.path.realpath(pd) + else: + try: + pd = (pwd.getpwnam(p[0])[5] + PROFILE_DIR + + '/' + p[1]) + except: + errout(_("Invalid profile: %s") % pd, quit=0) + raise + if not os.path.isfile(pd + '/addedpacks'): + errout(_("Invalid profile folder: %s") % pd) + return pd + + + +#+++++++++++++++++++++++++++++++++++++++++ +#Regular expression search strings for progress reports +import re +#lit: give []() a \-prefix +#grp: surround string in () +#opt: surround string in [] + +def _lit(s): + for c in r'[()]': + s = s.replace(c, '\\' + c) + return s + +def _grp(s, x=''): + return '(' + s + ')' + x + +def _grp0(s, x=''): + return '(?:' + s + ')' + x + +def _opt(s, x=''): + return '[' + s + ']' + x + + +_re_pacman = re.compile( _grp0(_lit('(') + + _grp(_opt('^/', '+') + '/' + _opt('^)', '+')) + + _lit(')'), '?') + + _grp('.*?') + + _lit('[') + _grp(_opt('-#', '+')) + _lit(r']\s+') + + _grp(_opt('0-9', '+')) + + '%' + ) + +_re_mksquashfs = re.compile(_lit('[.*]') + + _grp('.* ' + + _grp(_opt('0-9', '+')) + + '%') + ) + +_re_mkisofs = re.compile(_opt(' 1') + _opt(' \d') + '\d\.\d\d%') + +#----------------------------------------- +class pacman_filter_gen: + """Return a function to detect and process the progress output of + pacman. + """ + def __init__(self): + self.progress = '' + + def __call__(self, line, nl): + ms = _re_pacman.match(line) + if ms: + p = ms.group(3) + if (self.progress != p) or nl: + self.progress = p + if _controlled: + xfromy = ms.group(1) + if not xfromy: + xfromy = '' + return 'pacman:%s|%s|%s' % (xfromy, ms.group(2), + ms.group(4)) + if nl: + sys.stdout.write(' '*80 + '\r') + return line.rsplit(None, 1)[0] + else: + return '/*/' + return line + + +class mksquashfs_filter_gen: + """Return a function to detect and process the progress output of + mksquashfs. + """ + def __init__(self): + self.progress = '' + + def __call__(self, line, nl): + ms = _re_mksquashfs.match(line) + if ms: + percent = ms.group(2) + if (self.progress != percent) or nl: + self.progress = percent + if _controlled: + return 'mksquashfs:' + ms.group(1) + return re.sub(r'=[-\\/|]', '= ', line) + else: + return '/*/' + return line + + +class mkisofs_filter_gen: + """Return a function to detect and process the progress output of + mkisofs. + """ + def __call__(self, line, nl): + ms = _re_mkisofs.match(line) + if ms: + if _controlled: + return 'mkisofs:' + line + sys.stdout.write(line + '\r') + sys.stdout.flush() + return '/*/' + return line + + +def readdata(filename): + return readfile(base_dir + '/data/' + filename) + + +def readfile(fpath): + try: + fh = open(fpath) + text = fh.read() + fh.close() + except: + errout(_("Couldn't read file: %s") % fpath) + return None + return text + + +def writefile(text, path): + try: + pd = os.path.dirname(path) + if not os.path.isdir(pd): + os.makedirs(pd) + fh = None + fh = open(path, 'w') + fh.write(text) + return True + except: + return False + finally: + if fh: + fh.close() + diff --git a/build_tools/l7/larch0/cli/boot_iso.py b/build_tools/l7/larch0/cli/boot_iso.py new file mode 100755 index 0000000..19c3510 --- /dev/null +++ b/build_tools/l7/larch0/cli/boot_iso.py @@ -0,0 +1,154 @@ +#!/usr/bin/env python +# +# live_part.py +# +# (c) Copyright 2009 - 2010 Michael Towers (larch42 at googlemail dot com) +# +# This file is part of the larch project. +# +# larch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# larch is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with larch; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#---------------------------------------------------------------------------- +# 2010.07.12 + +"""This is a command line script to prepare a boot 'iso' for a USB larch +device, to make this bootable via CD on systems which cannot boot from USB +devices. +Parameters are passed as options and arguments. +""" + +import os +from config import * +from backend import * +from media_common import * + +def build_bootiso(options, devicename): + """Create a boot iso for the specified medium. + 'devicename' is the name (e.g. 'sdb1', without '/dev/') of the + source partition. + """ + # Check device + device = '/dev/' + devicename + if not os.path.exists(device): + errout(_("Invalid device: %s") % device) + options.source = device + medium = Medium(options) + ipath = medium.chrootpath + build = medium.build + + # Need to get the label + label = medium.get_device_label(device) + + # Write bootloader configuration file + bootconfig(build, options.syslinux, label, device, options.detection) + + # Select bootloader + if options.syslinux: + # Get fresh isolinux.bin + runcmd('cp %s/boot/isolinux/isolinux.bin0 %s/boot/isolinux/isolinux.bin' + % (build, build)) + parms = '-b boot/isolinux/isolinux.bin -c boot/isolinux/isolinux.boot' + # Select bootloader + else: + parms = '-b boot/grub/stage2_eltorito' + + # Need to adjust paths to cater for chroot! + source0 = medium.chroot_medium_dir() + isopath0 = medium.iso_path() + + # Actually the volume label can be 32 bytes, but 16 is compatible + # with ext2 (though a little longer than vfat) + label = check_label(options.label, 16) + # Build iso + if not chroot(ipath, ('mkisofs -R -l %s -no-emul-boot -boot-load-size 4' + ' -boot-info-table -input-charset=UTF-8' + ' -V "%s"' + ' -o "%s"' + ' "%s"') % (parms, label, isopath0, BUILD0), + filter=mkisofs_filter_gen()): + + errout(_("iso build failed")) + + medium.unmount() + runcmd('rm -rf %s' % build) + + comment(" *** %s ***" % (_("%s was successfully created") + % (options.isofile))) + + + +if __name__ == '__main__': + start_translator() + + from optparse import OptionParser, OptionGroup + parser = OptionParser(usage=_("usage: %prog [options] partition" + " (e.g. sdb1)")) + + parser.add_option("-o", "--isofile", action="store", type="string", + default=BOOTISO, dest="isofile", + help=_("Specify the output file (default '%s'). It will be" + " generated to the current directory.") % BOOTISO) + parser.add_option("-D", "--setdir", action="store", type="string", + dest='setdir', default='', + help=_("Set current directory," + " so that the 'iso' can be placed there")) + parser.add_option("-d", "--detect", action="store", type="string", + default="label", dest="detection", + help=(_("Method for boot partition detection: %s (default: label)") + % detection_methods)) + parser.add_option("-b", "--syslinux", action="store_true", dest="syslinux", + default=False, help=_("Use the syslinux bootloader" + " (the default is GRUB)")) + + parser.add_option("-i", "--installation-dir", action="store", type="string", + default="", dest="idir", + help=_("Path to larchified directory (default %s)") % INSTALLATION) + parser.add_option("-s", "--slave", action="store_true", dest="slave", + default=False, help=_("Run as a slave from a controlling program" + " (e.g. from a gui)")) + parser.add_option("-q", "--quiet", action="store_true", dest="quiet", + default=False, help=_("Suppress output messages, except errors" + " (no effect if -s specified)")) + + parser.add_option("-f", "--force", action="store_true", dest="force", + default=False, help=_("Don't ask for confirmation")) + + parser.add_option("-l", "--label", action="store", type="string", + default=ISOLABEL, dest="label", + help=_("Volume label for boot iso (default %s)") + % ISOLABEL) + parser.add_option("-C", "--chroot", action="store_true", + dest="chroot", default=False, + help=_("Use chroot for build")) + + + (options, args) = parser.parse_args() + if not args: + print _("You must specify the source partition\n") + parser.print_help() + sys.exit(1) + + if os.getuid() != 0: + print _("This application must be run as root") + sys.exit(1) + + init('live_part', options) + + # To avoid error messages + options.profile = None + options.nochroot = None + options.testmedium = False + + build_bootiso(options, devicename=args[0]) diff --git a/build_tools/l7/larch0/cli/config.py b/build_tools/l7/larch0/cli/config.py new file mode 100644 index 0000000..c62cf9d --- /dev/null +++ b/build_tools/l7/larch0/cli/config.py @@ -0,0 +1,92 @@ +# config.py +# +# (c) Copyright 2010 Michael Towers (larch42 at googlemail dot com) +# +# This file is part of the larch project. +# +# larch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# larch is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with larch; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#---------------------------------------------------------------------------- +# 2010.07.13 + +# Basic (default) configuration information for larch +# Some of these can be changed ...???? + +# Default volume label +LABEL = 'LARCH-7.2' +# Default iso file +ISOFILE = 'larch7.iso' +# Default volume label for boot iso +ISOLABEL = 'LARCH-7-BOOT' +# Default boot iso file +BOOTISO = 'larch7boot.iso' +# Used as a mount point +MP = '/tmp/larch_mnt' +# Mount point (within chroot) for bind-mounting iso build directory +ISOBUILDMNT = '/tmp/isodir_mnt' +# Mount point for medium sources +SOURCEMOUNT = '/tmp/larch_mntsrc' +# Temporary directory for building medium boot directory +BUILD0 = '/tmp/larch_build' + +SYSLINUXDIR = '/usr/lib/syslinux' +GRUBDIR = '/usr/lib/grub/i386-pc' + +# A customized pacman.conf file is used for the installation, generated +# dynamically according to the options and the profile. +PACMAN_CONF = '/tmp/larch_pacman.conf' + +# Medium detection alternatives +detection_methods = 'label|uuid|device|search' + +# Some basic paths +import os, sys +module_dir = os.path.dirname(os.path.realpath(__file__)) +base_dir = os.path.dirname(module_dir) +script_dir = base_dir + '/buildscripts' + +# File to prevent two instances of larch from running +LOCKFILE = '/tmp/larch_lock' +# File (stem) for log +LOGFILE = '/tmp/larch_log_' +# The path to the Arch installation which is to be larchified +INSTALLATION = '/home/larchbuild' + +# These paths are intended for use in 'chroot installation_dir', etc. +# The base directory of the larchified stuff +CHROOT_DIR_BUILD = '/.larch' +# This is the base of all stuff to be cleared on a rerun of larchify +CHROOT_DIR_LARCHIFY = CHROOT_DIR_BUILD + '/larchify' +# The base directory of the medium building area +CHROOT_DIR_MEDIUM = CHROOT_DIR_LARCHIFY + '/medium' +# Area for building the (mods.sqf) overlay +CHROOT_DIR_OVERLAY = CHROOT_DIR_LARCHIFY + '/overlay' +# Location for saving the system.sqf (outside of the larchify area) +CHROOT_SYSTEMSQF = CHROOT_DIR_BUILD + '/system.sqf' + +def debug(text): + sys.stderr.write("DEBUG: " + text.strip() + "\n") + sys.stderr.flush() + +def start_translator(switchC=True): + import gettext, __builtin__ + gettext.install('larch', base_dir+'/i18n', unicode=1) + __builtin__.lang = (os.environ.get("LANGUAGE") or os.environ.get("LC_ALL") + or os.environ.get("LC_MESSAGES") or os.environ.get("LANG")) + if switchC: + # If subprocesses must be run without i18n because the text + # output is parsed. + os.environ["LANGUAGE"] = "C" + diff --git a/build_tools/l7/larch0/cli/larchify.py b/build_tools/l7/larch0/cli/larchify.py new file mode 100755 index 0000000..15a4d6a --- /dev/null +++ b/build_tools/l7/larch0/cli/larchify.py @@ -0,0 +1,588 @@ +#!/usr/bin/env python +# +# larchify.py +# +# (c) Copyright 2009-2010 Michael Towers (larch42 at googlemail dot com) +# +# This file is part of the larch project. +# +# larch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# larch is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with larch; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#---------------------------------------------------------------------------- +# 2010.07.13 + +# This is a command line script to prepare a larch live system from an +# Arch Linux installation. All needed parameters are passed as options. + +import os, sys +from config import * +from backend import * +from userinfo import Userinfo +from glob import glob +import random, crypt +from subprocess import Popen, PIPE, STDOUT + + +class Builder: + """This class manages 'larchifying' an Arch Linux installation. + """ + def __init__(self, options): + self.installation_dir = get_installation_dir() + self.installation0 = (self.installation_dir + if self.installation_dir != "/" else "") + testfile = self.installation0 + '/etc/pacman.conf' + if not os.path.isfile(testfile): + errout(_("File '%s' doesn't exist:\n" + " '%s' not an Arch installation?") + % (testfile, self.installation_dir)) + + self.profile_dir = get_profile() + + + def build(self, options): + if not (self.installation0 or query_yn(_( + "Building a larch live medium from the running system is" + "\nan error prone process. Changes to the running system" + "\nmade while running this function may be only partially" + "\nincorporated into the compressed system images." + "\n\nDo you wish to continue?")), True): + return False + + # Define the working area - it must be inside the installation + # because of the use of chroot for some functions + self.larchify_dir = self.installation0 + CHROOT_DIR_LARCHIFY + # Location for the live medium image + self.medium_dir = self.installation0 + CHROOT_DIR_MEDIUM + # And potentially a saved system.sqf + self.system_sqf = self.installation0 + CHROOT_SYSTEMSQF + # Needed for a potentially saved locales directory + self.locales_base = self.installation0 + CHROOT_DIR_BUILD + # For building the (mods.sqf) overlay + self.overlay = self.installation0 + CHROOT_DIR_OVERLAY + comment("Initializing larchify process") + + if options.oldsqf: + if os.path.isfile(self.medium_dir + "/larch/system.sqf"): + runcmd("mv %s/larch/system.sqf %s" % + (self.medium_dir, self.system_sqf)) + else: + runcmd("rm -f %s" % self.system_sqf) + + # Clean out larchify area and create overlay directory + runcmd('rm -rf %s' % self.larchify_dir) + runcmd('mkdir -p %s' % self.overlay) + + if not self.find_kernel(): + return False + + if not self.system_check(): + return False + + comment("Beginning to build larch medium files") + # Clear out the directory + runcmd('rm -rf %s' % self.medium_dir) + # The base medium boot directory, bootloader independent. + runcmd('mkdir -p %s/boot' % self.medium_dir) + # The main larch direcory + runcmd('mkdir -p %s/larch' % self.medium_dir) + + # kernel + runcmd("cp -f %s/boot/%s %s/boot/larch.kernel" % + (self.installation0, self.kname, self.medium_dir)) + # Remember file name (to ease update handling) + runcmd('bash -c "echo \'%s\' > %s/larch/kernelname"' + % (self.kname, self.medium_dir)) + + # if no saved system.sqf, squash the Arch installation at self.installation_dir + if not os.path.isfile(self.system_sqf): + comment("Generating system.sqf") + # root directories which are not included in the squashed system.sqf + ignoredirs = "boot dev mnt media proc sys tmp .livesys " + ignoredirs += CHROOT_DIR_BUILD.lstrip("/") + # /var stuff + ignoredirs += " var/log var/tmp var/lock" + # others + ignoredirs += " usr/lib/locale" + + # Additional directories to ignore can also be specified in the + # profile. This is a nasty option. It was requested, and might + # be useful under certain special circumstances, but I recommend + # not using it unless you are really sure what you are doing. + veto_file = self.profile_dir + '/vetodirs' + if os.path.isfile(veto_file): + fh = open(veto_file) + for line in fh: + line = line.strip() + if line and (line[0] != '#'): + ignoredirs += ' ' + line.lstrip('/') + fh.close() + + if not chroot(self.installation0, + "/sbin/mksquashfs '/' '%s' -e %s" + % (CHROOT_SYSTEMSQF, ignoredirs), + filter=mksquashfs_filter_gen()): + errout(_("Squashing system.sqf failed")) + # remove execute attrib + runcmd("chmod oga-x %s" % self.system_sqf) + + # move system.sqf to medium directory + runcmd("mv %s %s/larch" % (self.system_sqf, self.medium_dir)) + + # prepare overlay + comment("Generating larch overlay") + # Copy over the overlay from the selected profile + if os.path.isdir("%s/rootoverlay" % self.profile_dir): + runcmd('bash -c "cp -rf %s/rootoverlay/* %s"' + % (self.profile_dir, self.overlay)) + # Ensure there is an /etc directory in the overlay + runcmd("mkdir -p %s/etc" % self.overlay) + # fix sudoers if any + if os.path.isfile("%s/etc/sudoers" % self.overlay): + runcmd("chmod 0440 %s/etc/sudoers" % self.overlay) + runcmd("chown root:root %s/etc/sudoers" % self.overlay) + + # Prepare inittab + inittab = self.overlay + "/etc/inittab" + itsave = inittab + ".larchsave" + it0 = self.installation0 + "/etc/inittab" + itl = self.overlay + "/etc/inittab.larch" + if not os.path.isfile(itl): + itl = self.installation0 + "/etc/inittab.larch" + if not os.path.isfile(itl): + itl = None + # Save the original inittab if there is an inittab.larch file, + # ... if there isn't already a saved one + if itl: + if ((not os.path.isfile(it0 + ".larchsave")) + and (not os.path.isfile(itsave))): + runcmd("cp %s %s" % (it0, itsave)) + # Use the .larch version in the live system + runcmd("cp -f %s %s" % (itl, inittab)) + + comment("Generating larch initcpio") + if not self.gen_initramfs(): + return False + + lpath = self.locales_base + '/locale' + if self.installation0: + if options.oldlocales and os.path.isdir(lpath): + comment("Copying saved glibc locales") + runcmd('rm -rf %s/usr/lib/locale' % self.overlay) + runcmd('mkdir -p %s/usr/lib' % self.overlay) + runcmd('cp -a %s %s/usr/lib' % (lpath, self.overlay)) + else: + comment("Generating glibc locales") + runcmd('rm -rf %s' % lpath) + script('larch-locales "%s" "%s"' % (self.installation0, + self.overlay)) + # Save the generated locales for possible reuse + runcmd('cp -a %s/usr/lib/locale %s' % (self.overlay, + self.locales_base)) + + if (os.path.isfile(self.installation0 + '/usr/bin/ssh-keygen') + and not os.path.isfile(self.profile_dir + '/nosshkeys')): + # ssh initialisation - done here so that it doesn't need to + # be done when the live system boots + comment("Generating ssh keys to overlay") + sshdir = CHROOT_DIR_OVERLAY + "/etc/ssh" + runcmd("mkdir -p %s" % (self.installation0 + sshdir)) + for k, f in [("rsa1", "ssh_host_key"), ("rsa", "ssh_host_rsa_key"), + ("dsa", "ssh_host_dsa_key")]: + chroot(self.installation0, + "ssh-keygen -t %s -N '' -f %s/%s" + % (k, sshdir, f), ["dev"]) + + # Ensure the hostname is in /etc/hosts + script("larch-hosts %s %s" % (self.installation0, self.overlay)) + + # Handle /mnt + runcmd("mkdir -p %s/mnt" % self.overlay) + for d in os.listdir("%s/mnt" % self.installation0): + if os.path.isdir("%s/mnt/%s" % (self.installation0, d)): + runcmd("mkdir %s/mnt/%s" % (self.overlay, d)) + + # Ensure there is a /boot directory + runcmd("mkdir -p %s/boot" % self.overlay) + + # Run customization script + tweak = self.profile_dir + '/build-tweak' + if os.path.isfile(tweak): + comment("(WARNING): Running user's build customization script") + if runcmd(tweak + ' %s %s' % (self.installation0, + self.overlay))[0]: + comment("Customization script completed") + else: + errout(_("Build customization script failed")) + + # Get root password + rootpwf = self.profile_dir + '/rootpw' + if os.path.isfile(rootpwf): + rootpw = readfile(rootpwf).strip() + if rootpw == '!': + # Lock the password + rootcmd = 'usermod -L' + else: + rootcmd = "usermod -p '%s'" % encryptPW(rootpw) + else: + rootcmd = None + + # Add users and set root password + if self.installation0 and not self.add_users(rootcmd): + return False + + comment("Squashing mods.sqf") + if not chroot(self.installation0, + "/sbin/mksquashfs '%s' '%s/larch/mods.sqf'" + % (CHROOT_DIR_OVERLAY, CHROOT_DIR_MEDIUM), + filter=mksquashfs_filter_gen()): + errout(_("Squashing mods.sqf failed")) + # remove execute attrib + runcmd("chmod oga-x %s/larch/mods.sqf" % self.medium_dir) + + runcmd("rm -rf %s" % self.overlay) + + comment(" *** %s ***" % _("larchify-process completed")) + return True + + + def add_users(self, rootcmd): + userinfo = Userinfo(self.profile_dir) + userlist = [] + for user in userinfo.allusers(): + # Only include if the user does not yet exist + if runcmd('bash -c "grep \"^%s\" %s/etc/passwd || echo -"' + % (user, self.installation_dir))[1][0] != '-': + comment("(WARNING): User '%s' exists already" % user) + else: + userlist.append(user) + + # Only continue if there are new users in the list + if rootcmd: + clist = [('root', rootcmd + ' %s')] + else: + if userlist == []: + return True + clist = [] + + # Save system files and replace them by the overlay versions + savedir = self.larchify_dir + '/save_etc' + runcmd('rm -rf %s' % savedir) + runcmd('mkdir -p %s/default' % savedir) + savelist = 'group,gshadow,passwd,shadow,login.defs,skel' + runcmd('bash -c "cp -a %s/etc/{%s} %s"' + % (self.installation0, savelist, savedir)) + runcmd('cp -a %s/etc/default/useradd %s/default' + % (self.installation0, savedir)) + for f in ('group', 'gshadow', 'passwd', 'shadow', 'login.defs'): + if os.path.isfile(self.overlay + '/etc/%s'): + runcmd('cp %s/etc/%s %s/etc' + % (self.overlay, f, self.installation0)) + if os.path.isfile(self.overlay + '/etc/default/useradd'): + runcmd('cp %s/etc/default/useradd %s/etc/default' + % (self.overlay, self.installation0)) + if os.path.isdir(self.overlay + '/etc/skel'): + runcmd('cp -r %s/etc/skel %s/etc' + % (self.overlay, self.installation0)) + + # Build the useradd command + userdir0 = '/users' + userdir = self.larchify_dir + userdir0 + userdirs = [] + runcmd('mkdir -p %s/home' % self.overlay) + for u in userlist: + cline = 'useradd -m' + pgroup = userinfo.get(u, 'maingroup') + if pgroup: + cline += ' -g ' + pgroup + uid = userinfo.get(u, 'uid') + if uid: + cline += ' -u ' + uid + pw = userinfo.get(u, 'pw') + if (pw == ''): + # Passwordless login + pwcrypt = '' + else: + # Normal MD5 password + pwcrypt = encryptPW(pw) + cline += " -p '%s'" % pwcrypt + skeldir = userinfo.get(u, 'skel') + if skeldir: + # Custom home initialization directories in the profile + # always start with 'skel_' + skel = 'skel_' + skeldir + if skel not in userdirs: + userdirs.append(skel) + cline += ' -k %s/%s' % (CHROOT_DIR_LARCHIFY + userdir0, + skel) + # Allow for expert tweaking + cline += ' ' + userinfo.get(u, 'expert') + # The user and the command to be run + clist.append((u, cline + ' %s')) + xgroups = userinfo.get(u, 'xgroups') + if xgroups: + xgl = [] + for g in xgroups.split(','): + clist.append((u, 'usermod -a -G %s %%s' % g)) + + if userdirs: + # Copy custom 'skel' directories to build space + runcmd('rm -rf %s' % userdir) + runcmd('mkdir -p %s' % userdir) + for ud in userdirs: + runcmd('cp -r %s/%s %s/%s' % + (self.profile_dir, ud, userdir, ud)) + + nfail = 0 + ok = True + for u, cmd in clist: + if not chroot(self.installation0, cmd % u): + nfail += 1 + # Errors adding users to groups are not fatal: + if not cmd.startswith('usermod -a -G'): + ok = False + if os.path.isdir('%s/home/%s' % (self.installation0, u)): + runcmd('mv %s/home/%s %s/home' + % (self.installation0, u, self.overlay)) + + if nfail > 0: + errout(_("%d user account operation(s) failed") % nfail, 0) + # Move changed /etc/{group,gshadow,passwd,shadow} to overlay + runcmd('bash -c "mv %s/etc/{group,gshadow,passwd,shadow} %s/etc"' + % (self.installation0, self.overlay)) + # Restore system files in base installation + runcmd('rm -rf %s/etc/skel' % self.installation0) + runcmd('bash -c "cp -a %s/* %s/etc"' + % (savedir, self.installation0)) + return ok + + + def system_check(self): + comment("Testing for necessary packages and kernel modules") + fail = "" + warn = "" + nplist = ["larch-live"] + + mdep = (self.installation0 + + "/lib/modules/%s/modules.dep" % self.kversion) + if Popen(["grep", "/squashfs.ko", mdep], stdout=PIPE, + stderr=STDOUT).wait() != 0: + fail += _("No squashfs module found\n") + + if Popen(["grep", "/aufs.ko", mdep], stdout=PIPE, + stderr=STDOUT).wait() == 0: + self.ufs='_aufs' + nplist.append("aufs2-util") + + elif Popen(["grep", "/unionfs.ko", mdep], stdout=PIPE, + stderr=STDOUT).wait() == 0: + self.ufs='_unionfs' + + else: + fail += _("No aufs or unionfs module found\n") + + for p in nplist: + if not self.haspack(p): + fail += _("Package '%s' is needed by larch systems\n") % p + + if not self.haspack("syslinux"): + warn += _("Without package 'syslinux' you will not be able\n" + "to create syslinux or isolinux booting media\n") + + if (not self.haspack("cdrkit")) and (not self.haspack("cdrtools")): + warn += _("Without package 'cdrkit' (or 'cdrtools') you will\n" + "not be able to create CD/DVD media\n") + + if not self.haspack("eject"): + warn += _("Without package 'eject' you will have problems\n" + "using CD/DVD media\n") + + if warn: + cont = query_yn(_("WARNING:\n%s" + "\n Continue building?") % warn) + else: + cont = True + + if fail: + errout(_("ERROR:\n%s") % fail) + + return cont + + + def haspack(self, package): + """Check whether the given package is installed. + """ + for p in os.listdir(self.installation0 + '/var/lib/pacman/local'): + if p.rsplit("-", 2)[0] == package: + return True + return False + + + def find_kernel(self): + # The uncomfortable length of this function is deceptive, + # most of it is for dealing with errors. + comment("Seeking kernel information") + kscript = "%s/kernel" % self.profile_dir + if os.path.isfile(kscript): + p = Popen([kscript], stdout=PIPE, stderr=STDOUT) + r = p.communicate()[0] + if p.returncode == 0: + self.kname, self.kversion = r.split() + + else: + errout(_("Problem running %s:\n %s") % (kscript, r)) + else: + kernels = glob(self.installation0 + '/boot/vmlinuz*') + if len(kernels) > 1: + errout(_("More than one kernel found:\n %s") % + "\n ".join(kernels)) + elif not kernels: + errout(_("No kernel found")) + self.kname = os.path.basename(kernels[0]) + + self.kversion = None + for kv in os.listdir(self.installation0 + '/lib/modules'): + if os.path.isfile(self.installation0 + + ('/lib/modules/%s/modules.dep' % kv)): + if self.kversion: + errout(_("More than one set of kernel modules in %s") + % (self.installation0 + '/lib/modules')) + self.kversion = kv + else: + kmpath = self.installation0 + ('/lib/modules/%s' % kv) + comment("Unexpected kernel files at %s" % kmpath) + # Try to find packages concerned + p = Popen(["find", ".", "-name", "*.ko"], cwd=kmpath, + stdout=PIPE, stderr=STDOUT) + r = p.communicate()[0] + if p.returncode == 0: + packs = [] + for km in r.split(): + a = chroot(self.installation0, + 'pacman -Qoq /lib/modules/%s/%s' + % (kv, km)) + + if a: + pack = "-".join(a[0].split()) + if pack not in packs: + packs.append(pack) + comment(" Package: %s" % pack) + + else: + comment("Couldn't determine guilty packages") + + if not query_yn(_("WARNING:" + "\n You seem to have installed a package containing modules" + "\nwhich aren't compatible with your kernel (see log)." + "\nPlease check that this won't cause problems." + "\nMaybe you need the corresponding package for your kernel?" + "\n\n Continue building?")): + return False + + if not self.kversion: + errout(_("Couldn't find kernel modules")) + + comment("Kernel: %s - version: %s" % (self.kname, self.kversion)) + chroot(self.installation0, "depmod %s" % self.kversion) + return True + + + def gen_initramfs(self): + # Fix up larch mkinitcpio.conf for unionfs/aufs + conf = self.overlay + "/etc/mkinitcpio.conf.larch" + if os.path.isfile(conf + "0"): + conf0 = conf + "0" + else: + conf0 = self.installation0 + "/etc/mkinitcpio.conf.larch0" + runcmd('bash -c "sed \'s|___aufs___|%s|g\' <%s >%s"' % (self.ufs, conf0, conf)) + + presets = [os.path.basename(f) for f in glob( + self.installation0 + "/etc/mkinitcpio.d/kernel26*.preset")] + if len(presets) != 1: + errout(_("Couldn't find usable mkinitcpio preset: %s") % + self.installation0 + "/etc/mkinitcpio.d/kernel26*.preset") + + # Save original preset file (unless a '*.larchsave' is already present) + idir = self.installation0 + "/etc/mkinitcpio.d" + oldir = self.overlay + "/etc/mkinitcpio.d" + if not os.path.isfile("%s/%s.larchsave" % (idir, presets[0])): + runcmd("mkdir -p %s" % oldir) + runcmd("cp %s/%s %s/%s.larchsave" % + (idir, presets[0], oldir, presets[0])) + + # Adjust larch.preset file for custom kernels + runcmd('bash -c "sed \'s|___|%s|\' <%s/larch.preset0 >%s/larch.preset"' + % (presets[0].rsplit(".", 1)[0], idir, oldir)) + + # Replace 'normal' preset in overlay + runcmd("cp %s/larch.preset %s/%s" % (oldir, oldir, presets[0])) + + # Generate initramfs + return chroot(self.installation0, + "mkinitcpio -k %s -c %s -g %s" % + (self.kversion, + CHROOT_DIR_OVERLAY + "/etc/mkinitcpio.conf.larch", + CHROOT_DIR_MEDIUM + "/boot/larch.img")) + + +def encryptPW(pw): + """Encrypt a password - needed for user account generation. + """ + salt = '$1$' + for i in range(8): + salt += random.choice("./0123456789abcdefghijklmnopqrstuvwxyz" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ") + return crypt.crypt(pw, salt) + + + +if __name__ == "__main__": + start_translator() + + from optparse import OptionParser, OptionGroup + parser = OptionParser(usage=_("usage: %prog [options]")) + + parser.add_option("-p", "--profile", action="store", type="string", + default="", dest="profile", + help=_("Profile: 'user:profile-name' or path to profile directory")) + parser.add_option("-i", "--installation-dir", action="store", type="string", + default="", dest="idir", + help=_("Path to directory to be larchified (default %s)") + % INSTALLATION) + parser.add_option("-s", "--slave", action="store_true", dest="slave", + default=False, help=_("Run as a slave from a controlling program" + " (e.g. from a gui)")) + parser.add_option("-q", "--quiet", action="store_true", dest="quiet", + default=False, help=_("Suppress output messages, except errors" + " (no effect if -s specified)")) + parser.add_option("-o", "--oldsqf", action="store_true", dest="oldsqf", + default=False, help=_("Reuse previously generated system.sqf")) + parser.add_option("-l", "--oldlocales", action="store_true", + dest="oldlocales", default=False, + help=_("Reuse previously generated locales")) + parser.add_option("-f", "--force", action="store_true", dest="force", + default=False, help=_("Don't ask for confirmation")) + + (options, args) = parser.parse_args() +# Should there be arguments? + + if os.getuid() != 0: + print _("This application must be run as root") + sys.exit(1) + init('larchify', options) + builder = Builder(options) + if builder.build(options): + sys.exit(0) + else: + sys.exit(1) diff --git a/build_tools/l7/larch0/cli/live_iso.py b/build_tools/l7/larch0/cli/live_iso.py new file mode 100755 index 0000000..e6899c9 --- /dev/null +++ b/build_tools/l7/larch0/cli/live_iso.py @@ -0,0 +1,154 @@ +#!/usr/bin/env python +# +# live_iso.py +# +# (c) Copyright 2009 - 2010 Michael Towers (larch42 at googlemail dot com) +# +# This file is part of the larch project. +# +# larch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# larch is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with larch; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#---------------------------------------------------------------------------- +# 2010.07.12 + +# This is a command line script to prepare an 'iso' file from an +# already larchified Arch Linux installation. Alternatively, another +# larch medium can be used as source (with the '-S' option). +# All needed parameters are passed as options. + +import os +from config import * +from backend import * +from media_common import * + + +def build_iso(options): + """Create a bootable iso from the source larch image. If a chroot + build is used (default unless -S is specified) the resulting iso file + will be relative to the larch build area (CHROOT_DIR_BUILD) in the + chroot directory, otherwise as specified to the -o option. + """ + medium = Medium(options) + ipath = medium.chrootpath + build = medium.build + + # Write bootloader configuration file + bootconfig(build, options.syslinux) + + if not os.path.isfile(medium.medium_dir + '/larch/larchboot'): + add_larchboot(build) + + # Need to adjust paths to cater for chroot! + source0 = medium.chroot_medium_dir() + isopath0 = medium.iso_path() + + # Select bootloader + if options.syslinux: + # Get fresh isolinux.bin + runcmd('cp %s/boot/isolinux/isolinux.bin0 %s/boot/isolinux/isolinux.bin' + % (build, build)) + parms = '-b boot/isolinux/isolinux.bin -c boot/isolinux/isolinux.boot' + # Select bootloader + else: + parms = '-b boot/grub/stage2_eltorito' + + # Actually the volume label can be 32 bytes, but 16 is compatible + # with ext2 (though a little longer than vfat) + label = check_label(options.label, 16) + # Build iso + if not chroot(ipath, ('mkisofs -R -l %s -no-emul-boot -boot-load-size 4' + ' -boot-info-table -input-charset=UTF-8' + ' -V "%s"' + ' -o "%s"' + ' -x "%s/boot"' + ' -x "%s/larch/save"' + ' "%s" "%s"') % (parms, label, isopath0, + source0, source0, source0, BUILD0), + filter=mkisofs_filter_gen()): + + errout(_("iso build failed")) + + # Process iso so that it can be 'dd'ed to a USB-stick + if options.syslinux and not chroot(ipath, ('isohybrid %s' % isopath0)): + errout(_("Couldn't perform 'isohybrid' operation on larch 'iso'" + " (Not Critical!)"), 0) + medium.unmount() + runcmd('rm -rf %s' % build) + + comment(" *** %s ***" % (_("%s was successfully created") + % (options.isofile))) + + + +if __name__ == "__main__": + start_translator() + + from optparse import OptionParser, OptionGroup + parser = OptionParser(usage=_("usage: %prog [options]")) + + parser.add_option("-p", "--profile", action="store", type="string", + default="", dest="profile", + help=_("Profile: 'user:profile-name' or path to profile directory" + " (conflicts with -S)")) + parser.add_option("-S", "--source", action="store", type="string", + default="", dest="source", + help=_("Source: path to larch medium image (conflicts with -p)." + " It can also be a device ('/dev/...') or an 'iso' file.")) + parser.add_option("-i", "--installation-dir", action="store", type="string", + default="", dest="idir", + help=_("Path to larchified directory (default %s)") % INSTALLATION) + parser.add_option("-s", "--slave", action="store_true", dest="slave", + default=False, help=_("Run as a slave from a controlling program" + " (e.g. from a gui)")) + parser.add_option("-q", "--quiet", action="store_true", dest="quiet", + default=False, help=_("Suppress output messages, except errors" + " (no effect if -s specified)")) + + parser.add_option("-f", "--force", action="store_true", dest="force", + default=False, help=_("Don't ask for confirmation")) + + parser.add_option("-b", "--isolinux", action="store_true", dest="syslinux", + default=False, help=_("Use the isolinux bootloader" + " (the default is GRUB)")) + parser.add_option("-l", "--label", action="store", type="string", + default=LABEL, dest="label", + help=_("Volume label for iso (default '%s')") % LABEL) + parser.add_option("-o", "--isofile", action="store", type="string", + default=ISOFILE, dest="isofile", + help=_("Specify the output file (default '%s'). It will be" + " generated to the current directory.") % ISOFILE) + parser.add_option("-D", "--setdir", action="store", type="string", + dest='setdir', default='', + help=_("Set current directory," + " so that the 'iso' can be placed there")) + parser.add_option("-C", "--chroot", action="store_true", + dest="chroot", default=False, + help=_("Use chroot for build (default when -S not specified)")) + parser.add_option("-c", "--nochroot", action="store_true", + dest="nochroot", default=False, + help=_("Don't use chroot for build (default when -S specified)")) + + parser.add_option('-T', '--testmedium', action='store_true', + dest='testmedium', default=False, + help=_("Test source medium only (used by gui)")) + + (options, args) = parser.parse_args() + + if os.getuid() != 0: + print _("This application must be run as root") + sys.exit(1) + + init('live_iso', options) + build_iso(options) diff --git a/build_tools/l7/larch0/cli/live_part.py b/build_tools/l7/larch0/cli/live_part.py new file mode 100755 index 0000000..22af5d3 --- /dev/null +++ b/build_tools/l7/larch0/cli/live_part.py @@ -0,0 +1,221 @@ +#!/usr/bin/env python +# +# live_part.py +# +# (c) Copyright 2009 - 2010 Michael Towers (larch42 at googlemail dot com) +# +# This file is part of the larch project. +# +# larch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# larch is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with larch; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#---------------------------------------------------------------------------- +# 2010.07.18 + +# This is a command line script to prepare a larch live medium from an +# already larchified Arch Linux installation, or another larch medium. +# Parameters are passed as options and arguments. + +import os +from config import * +from backend import * +from media_common import * + + +def build_partition(options, devicename): + """Install the larchified system to the partition specified by the + options. + 'devicename' is the name (e.g. 'sdb1', without '/dev/') of the + partition to receive the larch image + """ + medium = Medium(options) + ipath = medium.chrootpath + build = medium.build + + # Check and format device + device = '/dev/' + devicename + if not os.path.exists(device): + errout(_("Invalid device: %s") % device) + if options.format: + # label + if options.syslinux: + labellength = 11 + opt = 'n' + else: + labellength = 16 + opt = 'L' + l = ('-%s "%s"' % (opt, check_label(options.label, labellength)) + if options.label else '') + # set partition type, reload partition table, and format + if not (chroot(ipath, 'bash -c "echo -e \',,%s,*\\n\' |' + ' sfdisk --no-reread %s -N%s"' % + ('0c' if options.syslinux else 'L', + device[:8], device[8:]), ['dev']) + and chroot(ipath, 'partprobe %s' % device[:8], ['dev']) + and chroot(ipath, 'mkfs.%s %s %s' % + ('vfat' if options.syslinux else 'ext2', l, device), + ['dev'])): + + errout(_("Couldn't format %s") % device) + + # Need to get the label - if not formatting (an option for experts) + # it is probably not a good idea to change the volume label, so + # use the old one. + label = medium.get_device_label(device) + + # Check device format + ok, lines = runcmd('blkid -c /dev/null -o value -s TYPE %s' % device) + if not ok: + errout(_("Couldn't get format information for %s") % device) + fstype = lines[0] + if options.syslinux: + if fstype != 'vfat': + errout(_("syslinux is only supported on vfat")) + elif not fstype.startswith('ext'): + errout(_("GRUB is at present only supported on extN")) + + # Rename the syslinux boot directory if necessary + if os.path.isdir(build + '/boot/isolinux'): + runcmd('mv %s/boot/isolinux %s/boot/syslinux' % (build, build)) + # Write bootloader configuration file + bootconfig(build, options.syslinux, label, device, options.detection) + + # Mount partition and remove larch and boot dirs + runcmd('rm -rf %s' % MP) + runcmd('mkdir -p %s' % MP) + if not mount(device, MP): + errout(_("Couldn't mount larch partition, %s") % device) + runcmd('rm -rf %s/larch' % MP) + runcmd('rm -rf %s/boot' % MP) + + # Copy files to device + runcmd('cp -r %s/larch %s' % (medium.medium_dir, MP)) + runcmd('cp -r %s/boot %s' % (build, MP)) + medium.unmount() + + # To boot in 'search' mode the file larch/larchboot must be present + # (though at present this is only relevant for partitions, CDs will + # be booted even without this file). + # To enable session saving the file larch/save must be present + # (only relevant if not building an iso). + runcmd('bash -c "rm -f %s/larch/{larchboot,save}"' % MP) + if options.larchboot: + add_larchboot(MP) + + if options.nosave: + if options.save: + errout(_("Option '-a' conflicts with option '-A'")) + ssave = False + else: + ssave = not os.path.isfile(MP + '/larch/nosave') + + if options.save or ssave: + writefile("The presence of the file 'larch/save'" + " enables session saving.\n", MP + '/larch/save') + + # Unmount partition + unmount(MP) + + # Now set up bootloader in MBR + if options.mbr: + if options.syslinux: + runcmd('dd if=%s/boot/syslinux/mbr.bin of=%s' + % (build, device[:8])) + chroot(ipath, 'syslinux %s' % device, ('dev', 'proc')) + else: + script('larch-mbr-grub %s %s' % (ipath if ipath else '/', device)) + runcmd('rm -rf %s' % build) + comment(" *** %s ***" % (_("%s was successfully written") % device)) + + + +if __name__ == '__main__': + start_translator() + + from optparse import OptionParser, OptionGroup + parser = OptionParser(usage=_("usage: %prog [options] partition" + " (e.g. sdb1)")) + + parser.add_option("-p", "--profile", action="store", type="string", + default="", dest="profile", + help=_("Profile: 'user:profile-name' or path to profile directory" + " (conflicts with -S)")) + parser.add_option("-S", "--source", action="store", type="string", + default="", dest="source", + help=_("Source: path to larch medium image (conflicts with -p)." + " It can also be a device ('/dev/...') or an 'iso' file.")) + parser.add_option("-i", "--installation-dir", action="store", type="string", + default="", dest="idir", + help=_("Path to larchified directory (default %s)") % INSTALLATION) + parser.add_option("-s", "--slave", action="store_true", dest="slave", + default=False, help=_("Run as a slave from a controlling program" + " (e.g. from a gui)")) + parser.add_option("-q", "--quiet", action="store_true", dest="quiet", + default=False, help=_("Suppress output messages, except errors" + " (no effect if -s specified)")) + + parser.add_option("-f", "--force", action="store_true", dest="force", + default=False, help=_("Don't ask for confirmation")) + + parser.add_option("-d", "--detect", action="store", type="string", + default="label", dest="detection", + help=(_("Method for boot partition detection: %s (default: label)") + % detection_methods)) + parser.add_option("-b", "--syslinux", action="store_true", dest="syslinux", + default=False, help=_("Use the syslinux bootloader" + " (the default is GRUB)")) + parser.add_option("-l", "--label", action="store", type="string", + default=LABEL, dest="label", + help=_("Volume label for boot partition (default %s)") + % LABEL) + parser.add_option("-n", "--nosearchboot", action="store_false", + dest="larchboot", default=True, + help=_("Don't generate 'larch/larchboot' file")) + parser.add_option("-a", "--save", action="store_true", + dest="save", default=False, + help=_("Override profile larch/nosave" + " (force enable session saving) - conflicts with '-A'")) + parser.add_option("-A", "--nosave", action="store_true", + dest="nosave", default=False, + help=_("Force disabling of session saving - conflicts with '-a'")) + parser.add_option("-x", "--noformat", action="store_false", + dest="format", default=True, + help=_("Don't format partition (only for experts!)")) + parser.add_option("-m", "--noboot", action="store_false", + dest="mbr", default=True, + help=_("Don't install the bootloader (to the MBR)")) + parser.add_option("-C", "--chroot", action="store_true", + dest="chroot", default=False, + help=_("Use chroot for build (default when -S not specified)")) + parser.add_option("-c", "--nochroot", action="store_true", + dest="nochroot", default=False, + help=_("Don't use chroot for build (default when -S specified)")) + + (options, args) = parser.parse_args() + + # To avoid error messages + options.testmedium = False + options.setdir = '' + + if not args: + print _("You must specify the partition to receive larch\n") + parser.print_help() + sys.exit(1) + + if os.getuid() != 0: + print _("This application must be run as root") + sys.exit(1) + + init('live_part', options) + build_partition(options, devicename=args[0]) diff --git a/build_tools/l7/larch0/cli/media_common.py b/build_tools/l7/larch0/cli/media_common.py new file mode 100644 index 0000000..b39e67d --- /dev/null +++ b/build_tools/l7/larch0/cli/media_common.py @@ -0,0 +1,450 @@ +#!/usr/bin/env python +# +# media_common.py +# +# (c) Copyright 2009 - 2010 Michael Towers (larch42 at googlemail dot com) +# +# This file is part of the larch project. +# +# larch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# larch is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with larch; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#---------------------------------------------------------------------------- +# 2010.07.14 + +"""This code is used by both iso generator and partition creator modules. +The larch medium creation stage first uses the Medium class to prepare the +bootloader directories. build_iso and build_partition can also be used to +rebuild media starting from existing larch media, e.g. for conversions from +CD to usb-stick and vice-versa. Even a switch of bootloader is possible as +the bootloader configs for both GRUB and syslinux/isolinux are normally +included on the medium. +If not using a larch installation directory, the bootloader and/or mkisofs +must be supported by the host (according to medium and bootloader). +""" + +import os +from config import * +from backend import * + +class Medium: + """This class represents a boot medium image. + It checks the options for conflicts. + If necessary (no -S option provided on the command line) it + converts a larchified system to a boot medium image, by preparing + the bootloader directories and adding customization stuff + from the profile, but it does not write to any medium. + """ + def __init__(self, options): + self.options = options + if options.setdir: + try: + wd = os.path.realpath(options.setdir) + os.chdir(wd) + except: + errout(_("Couldn't switch directory to '%s'") % wd) + self.iso = False + self.installation_dir = get_installation_dir() + self.installation0 = (self.installation_dir + if self.installation_dir != '/' else '') + + # Check options + if options.chroot and options.nochroot: + errout(_("Option -C conflicts with -c")) + + if options.source: + # Using a specified source image + if options.profile: + errout(_("Option -S conflicts with -p")) + + # Use chroot? + self.chrootpath = self.installation0 if options.chroot else '' + + else: + # Using the larch build system + + # Use chroot? + self.chrootpath = '' if options.nochroot else self.installation0 + + # Mount point for source, if necessary + self.mps = self.chrootpath + SOURCEMOUNT + runcmd('rm -rf %s' % self.mps) + runcmd('mkdir -p %s' % self.mps) + + # Create a temporary work area + self.build = self.chrootpath + BUILD0 + runcmd('rm -rf %s' % self.build) + runcmd('mkdir -p %s' % self.build) + + if options.source: + # Location of medium + self.medium_dir = self._get_source(options.source, + options.syslinux, self.chrootpath, test=options.testmedium) + + else: + # Location for the live medium image + self.medium_dir = self.installation0 + CHROOT_DIR_MEDIUM + self._check_larchimage(self.medium_dir) + self.profile_dir = get_profile() + + self._bootdir(options.syslinux) + self._customizelarchdir() + + # The boot directory needs to be outside of the medium directory + # for some of the next steps + runcmd('cp -a %s/boot %s' % (self.medium_dir, self.build)) + + + def unmount(self): + if self.medium_dir == self.mps: + unmount(self.mps) + + if self.iso: + if self.chrootpath: + unmount(self.chrootpath + ISOBUILDMNT) + # Change owner of iso to match current directory + cwdstat = os.stat(os.getcwd()) + os.lchown(self.iso, cwdstat.st_uid, cwdstat.st_gid) + + + def get_device_label(self, device): + l = runcmd('blkid -c /dev/null -o value -s LABEL %s' + % device)[1][0] + if self.options.detection not in detection_methods.split('|'): + errout(_("Invalid detection method (-d option)")) + return l + + + def chroot_medium_dir(self): + """Get the medium path relative within the (possible) chroot. + """ + return self.medium_dir[len(self.chrootpath):] + + + def iso_path(self): + """If building an iso within a chroot the build directory must + be bind-mounted into the accessible area. + """ + self.iso = self.options.isofile.replace('/', '_') + basedir = os.getcwd() + if self.chrootpath: + runcmd('mkdir -p %s' % (self.chrootpath + ISOBUILDMNT)) + if not mount(basedir, self.chrootpath + ISOBUILDMNT, '--bind'): + errout(_("Couldn't bind-mount current directory")) + basedir = ISOBUILDMNT + return os.path.join(basedir, self.iso) + + + def _check_larchimage(self, mediumdir): + testfile = mediumdir + '/larch/system.sqf' + if not os.path.isfile(testfile): + errout(_("File '%s' doesn't exist, '%s' is not a larch medium") + % (testfile, mediumdir)) + + + def _get_source(self, source, syslinux, ipath='', test=False): + source = os.path.realpath(source) + testcode = 64 if test else 0 # For various tests, below + + # Is source an iso? + if os.path.isfile(source): + # Mount it + if mount(source, self.mps, '-o loop'): + source = self.mps + else: + errout(_("Couldn't mount '%s'. Not an iso?") % source) + + # Is source a device? + elif source.startswith('/dev/'): + mp = _get_mountpoint(source) + if mp: + source = mp + elif mount(source, self.mps): + source = self.mps + else: + errout(_("Couldn't mount '%s'") % source) + + # Simple check that it is really a larch image + self._check_larchimage(source) + + # Check bootloader support + if not (os.path.isdir(source + '/boot/isolinux') + or os.path.isdir(source + '/boot/syslinux')): + if test or syslinux: + errout(_("Source doesn't support syslinux"), 0) + testcode += 8 + if not os.path.isdir(source + '/boot/grub'): + if test or not syslinux: + errout(_("Source doesn't support GRUB"), 0) + testcode += 16 + + if testcode: + if os.path.isfile(source + 'larch/nosave'): + testcode += 2 + + unmount() + sys.exit(testcode) + return None + + # Is source within the chroot directory? + if ipath and not source.startswith(ipath + '/'): + if mount(source, self.mps, '--bind'): + source = self.mps + else: + errout(_("Couldn't bind-mount '%s'") % source) + + # Copy boot files + runcmd('cp -a %s/boot %s' % (source, self.build)) + + # Remove old config files + runcmd('rm -f %s/boot/syslinux/syslinux.cfg' % self.build) + runcmd('rm -f %s/boot/isolinux/isolinux.cfg' % self.build) + runcmd('rm -f %s/boot/grub/menu.lst' % self.build) + runcmd('rm -f %s/boot/isolinux/isolinux.bin' % self.build) + runcmd('rm -f %s/boot/isolinux/isolinux.boot' % self.build) + + # Rename the syslinux boot directory if necessary + if os.path.isdir(self.build + '/boot/syslinux'): + runcmd('mv %s/boot/syslinux %s/boot/isolinux' + % (self.build, self.build)) + + return source + + + def _bootdir(self, syslinux): + """Prepare boot directories for the various bootloaders. The + bootloader configuration files are not generated yet, as these + depend on the medium. + """ + comment("Fetch kernel and initramfs") + if not runcmd('cp -r %s/boot %s' % (self.medium_dir, self.build))[0]: + errout(_("No kernel and/or initramfs")) + + comment("Preparing bootloader directories") + # Only include the directories if the corresponding bootloader + # package ('grub' and/or 'syslinux') is installed + grub = os.path.isfile(self.installation0 + GRUBDIR + + '/stage2_eltorito') + isolinux = os.path.isfile(self.installation0 + SYSLINUXDIR + + '/isolinux.bin') + # Check bootloader support + if syslinux: + if not isolinux: + errout(_("Installation doesn't support syslinux")) + elif not grub: + errout(_("Installation doesn't support GRUB")) + + # Bootloader independent files are provided in larch at + # cd-root/boot0. The contents of this directory are placed in the + # medium's 'boot' directory. + # Individual files can be added or substituted by + # supplying them in the profile at cd-root/boot. + # It is also possible to completely replace the basic boot directory + # by having cd-root/boot0 in the profile - then the default + # larch version will not be used. + source0 = '%s/cd-root/boot0' % self.profile_dir + if not os.path.isdir(source0): + source0 = '%s/cd-root/boot0' % base_dir + runcmd('bash -c "cp -r %s/* %s/boot"' % (source0, self.build)) + # Copy any additional profile stuff + psource = '%s/cd-root/boot' % self.profile_dir + if os.path.isdir(psource): + runcmd('cp -rf %s/* %s' % (psource, self.build)) + # Get the boot options file + bootlines = self.profile_dir + '/bootlines' + if not os.path.isfile(bootlines): + bootlines = base_dir + '/data/bootlines' + runcmd('cp -f %s %s/boot' % (bootlines, self.build)) + + # The idea is that a basic boot directory for each boot-loader is + # provided in larch at cd-root/{grub0,isolinux0}. These are copied + # to the medium as 'boot/grub' and 'boot/isolinux'. Individual files + # can be added or substituted by supplying them in the profile at + # cd-root/{grub,isolinux}. + # It is also possible to completely replace the basic boot directory + # by having cd-root/{grub0,isolinux0} in the profile - then the default + # larch versions will not be used. + for ok, boot_dir in ((grub, 'grub'), (isolinux, 'isolinux')): + if ok: + # Copy bootloader specific stuff + source0 = '%s/cd-root/%s0' % (self.profile_dir, boot_dir) + if not os.path.isdir(source0): + source0 = '%s/cd-root/%s0' % (base_dir, boot_dir) + runcmd('cp -rf %s %s/boot/%s' + % (source0, self.build, boot_dir)) + + # Copy any additional profile stuff + psource = '%s/cd-root/%s' % (self.profile_dir, boot_dir) + if os.path.isdir(psource): + runcmd('cp -rf %s %s/boot' + % (psource, self.build)) + + # Copy the grub boot files to the medium's grub directory + # and rename base config file + if grub: + runcmd('bash -c "cp %s/* %s/boot/grub"' % + (self.installation0 + GRUBDIR, self.build)) + runcmd('mv %s/boot/grub/menu.lst %s/boot/grub/menu.lst_0' + % (self.build, self.build)) + + # Copy mbr.bin, vesamenu.c32 and isolinux.bin (renamed) + # to the boot directory and rename base config file + if isolinux: + runcmd('cp %s/mbr.bin %s/boot/isolinux' % + (self.installation0 + SYSLINUXDIR, self.build)) + runcmd('cp %s/vesamenu.c32 %s/boot/isolinux' % + (self.installation0 + SYSLINUXDIR, self.build)) + runcmd('cp %s/isolinux.bin %s/boot/isolinux/isolinux.bin0' % + (self.installation0 + SYSLINUXDIR, self.build)) + runcmd(('mv %s/boot/isolinux/isolinux.cfg' + ' %s/boot/isolinux/isolinux.cfg_0') + % (self.build, self.build)) + + + def _customizelarchdir(self): + # Replace any existing larch/copy directory + runcmd('rm -rf %s/larch/copy' % self.medium_dir) + if os.path.isdir(self.profile_dir + '/cd-root/larch/copy'): + runcmd('cp -r %s/cd-root/larch/copy %s/larch' % + (self.profile_dir, self.medium_dir)) + + # Replace any existing larch/extra directory + runcmd('rm -rf %s/larch/extra' % self.medium_dir) + if os.path.isdir(self.profile_dir + '/cd-root/larch/extra'): + runcmd('cp -r %s/cd-root/larch/extra %s/larch' % + (self.profile_dir, self.medium_dir)) + + # Handle existence of larch/nosave + runcmd('rm -f %s/larch/nosave' % self.medium_dir) + if os.path.isfile(self.profile_dir + '/nosave'): + runcmd('cp %s/nosave %s/larch' % + (self.profile_dir, self.medium_dir)) + + + +def _get_mountpoint(path): + ok, lines = runcmd('cat /etc/mtab') + for l in lines: + ll = l.split() + if (len(ll) > 4) and (ll[1] == path): + return ll[0] + return '' + + +def check_label(l, n): + if isinstance(l, unicode): + l = l.encode('utf8') + if len(l) > n: + if query_yn(_("The volume label is too long. Use the default (%s)?") + % LABEL): + return LABEL + else: + errout(_("Cancelled")) + return l + + +def add_larchboot(idir): + writefile("The presence of the file 'larch/larchboot' enables\n" + "booting the device in 'search' mode.\n", idir + '/larch/larchboot') + + +def bootconfig(medium, syslinux, label='', device='', detection=''): + """Convert and complete the bootlines file. + """ + # - add boot partition to options + if detection == 'uuid': + bootp = ('uuid=' + + runcmd('blkid -c /dev/null -o value -s UUID %s' + % device)[1][0].strip()) + elif detection == 'label': + if not label: + errout(_("Can't boot to label - device has no label")) + bootp = 'label=' + label + elif detection == 'partition': + bootp = 'root=' + device + else: + bootp = '' + + # - convert bootfiles to the correct format, + # inserting necessary info + bootconf = medium + '/boot/bootlines' + if not os.path.isfile(bootconf): + errout(_("Boot configuration file '%s' not found") % bootconf) + fhi = open(bootconf) + insert = '' + i = 0 + block = '' + title = '' + opts = '' + for line in fhi: + line = line.strip() + if not line: + if title: + i += 1 + # A block is ready + + if syslinux: + # isolinux/syslinux + block += 'label %02d\n' % i + block += 'MENU LABEL %s\n' % title + block += 'kernel /boot/larch.kernel\n' + block += ('append initrd=/boot/larch.img %s %s\n' + % (bootp, opts)) + + else: + # GRUB + block += 'title %s\n' % title + block += ('kernel /boot/larch.kernel %s %s\n' + % (bootp, opts)) + block += 'initrd /boot/larch.img\n' + + if i > 1: + insert += '\n' + insert += block + block = '' + title = '' + opts = '' + + elif line.startswith('comment:'): + block += '#%s\n' % (line.split(':', 1)[1]) + + elif line.startswith('title:'): + title = line.split(':', 1)[1].lstrip() + + elif line.startswith('options:'): + opts = line.split(':', 1)[1].lstrip() + fhi.close() + + # - insert the resulting string into the bootloader config file + if syslinux: + boot_dir = ('isolinux' if os.path.isdir(medium + '/boot/isolinux') + else 'syslinux') + configfile0 = 'isolinux.cfg_0' + configfile = boot_dir + '.cfg' + else: + boot_dir = 'grub' + configfile0 = 'menu.lst_0' + configfile = 'menu.lst' + configpath = '%s/boot/%s/%s' % (medium, boot_dir, configfile0) + if not os.path.isfile(configpath): + errout(_("Base configuration file (%s) not found") % configpath) + fhi = open(configpath) + fho = open('%s/boot/%s/%s' % (medium, boot_dir, configfile), 'w') + for line in fhi: + if line.startswith("###LARCH"): + fho.write(insert) + else: + fho.write(line) + fhi.close() + fho.close() diff --git a/build_tools/l7/larch0/cli/test.py b/build_tools/l7/larch0/cli/test.py new file mode 100755 index 0000000..18e8067 --- /dev/null +++ b/build_tools/l7/larch0/cli/test.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python +# +# This is a little script for testing the dispatcher and termination of +# subprocesses. It spawns several levels of itself, each instance just +# outputs an incrementing count until it is terminated. + +import sys, os, time, signal + +try: + import json as serialize +except: + import simplejson as serialize + +def out(text): + sys.stdout.write(serialize.dumps(text) + '\n') + sys.stdout.flush() + +def sigint(num, frame): + """A handler for SIGINT. Tidy up properly and quit. + """ + out("!>INTERRUPTED %d" % level) + exit(1) +signal.signal(signal.SIGINT, sigint) + +level = 3 +while level > 0: + if os.fork(): + break + time.sleep(1) + level -= 1 + +sys.stderr.write('%d: pid=%d ppid=%d pgrp=%d\n' % (level, + os.getpid(), os.getppid(), os.getpgrp())) +sys.stderr.flush() +time.sleep(5) + +n = 0 +while True: + n += 1 + out('--%d: %04d' % (level, n)) + time.sleep(4) + diff --git a/build_tools/l7/larch0/cli/userinfo.py b/build_tools/l7/larch0/cli/userinfo.py new file mode 100644 index 0000000..f2045aa --- /dev/null +++ b/build_tools/l7/larch0/cli/userinfo.py @@ -0,0 +1,93 @@ +# userinfo.py +# +# (c) Copyright 2009-2010 Michael Towers (larch42 at googlemail dot com) +# +# This file is part of the larch project. +# +# larch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# larch is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with larch; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#---------------------------------------------------------------------------- +# 2010.07.11 + +import os +from ConfigParser import SafeConfigParser + +# Default list of 'additional' groups for a new user +BASEGROUPS = 'video,audio,optical,storage,scanner,power,camera' + +class Userinfo: + def __init__(self, profile): + self.profile_dir = profile + + def getusers(self): + """Read user information by means of a SafeConfigParser instance. + This is then available as self.userconf. + """ + self.userconf = SafeConfigParser({'pw':'', 'maingroup':'', 'uid':'', + 'skel':'', 'xgroups':BASEGROUPS, 'expert':''}) + users = self.profile_dir + '/users' + if os.path.isfile(users): + try: + self.userconf.read(users) + except: + error0(_("Invalid 'users' file")) + + def allusers(self): + self.getusers() + return self.userconf.sections() + + def get(self, user, field): + return self.userconf.get(user, field) + + def userinfo(self, user, fields): + """Get an ordered list of the given field data for the given user. + """ + return [self.userconf.get(user, f) for f in fields] + + def userset(self, uname, field, text): + self.userconf.set(uname, field, text) + + def newuser(self, user): + try: + self.userconf.add_section(user) + return self.saveusers() + except: + error0(_("Couldn't add user '%s'") % user) + return False + + def deluser(self, user): + try: + self.userconf.remove_section(user) + return self.saveusers() + except: + error0(_("Couldn't remove user '%s'") % user) + return False + + def saveusers(self): + """Save the user configuration data (in 'INI' format) + """ + try: + fh = None + fh = open(self.profile_dir + '/users', 'w') + self.userconf.write(fh) + fh.close() + return True + except: + if fh: + fh.close() + error0(_("Couldn't save 'users' file")) + self.getusers() + return False + diff --git a/build_tools/l7/larch0/data/bootlines b/build_tools/l7/larch0/data/bootlines new file mode 100644 index 0000000..2191858 --- /dev/null +++ b/build_tools/l7/larch0/data/bootlines @@ -0,0 +1,20 @@ +# The information here will be adapted for the bootloader and inserted into its configuration +# file at the place marked '###LARCH' +# This header will be removed. +# Each block must have an empty line before and after it. +# There may be no empty lines within a block. + +comment: +title: Default: no swap, no copy-to-ram +options: + +comment: I probably don't want this bootline +comment: ... because copy-to-ram is mostly not so useful. +title: larch copy-to-ram (also activates swap) +options: c2r + +comment: +title: larch with swap +options: swap + +# END OF FILE diff --git a/build_tools/l7/larch0/data/locales b/build_tools/l7/larch0/data/locales new file mode 100644 index 0000000..750f5f3 --- /dev/null +++ b/build_tools/l7/larch0/data/locales @@ -0,0 +1,7 @@ +# locales for larch (/etc/locale.gen) +### THIS IS JUST AN EXAMPLE - YOU WILL PROBABLY WANT TO PLACE +### YOUR OWN VERSION IN THE PROFILE + +en_US.UTF-8 UTF-8 +en_GB.UTF-8 UTF-8 +de_DE.UTF-8 UTF-8 diff --git a/build_tools/l7/larch0/data/pacman.conf b/build_tools/l7/larch0/data/pacman.conf new file mode 100644 index 0000000..911c23d --- /dev/null +++ b/build_tools/l7/larch0/data/pacman.conf @@ -0,0 +1,84 @@ +# +# /etc/pacman.conf +# +# See the pacman.conf(5) manpage for option and repository directives + +# +# GENERAL OPTIONS +# +[options] +# The following paths are commented out with their default values listed. +# If you wish to use different paths, uncomment and update the paths. +#RootDir = / +#DBPath = /var/lib/pacman/ +#CacheDir = /var/cache/pacman/pkg/ +#LogFile = /var/log/pacman.log +HoldPkg = pacman glibc +# If upgrades are available for these packages they will be asked for first +SyncFirst = pacman +#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u +#XferCommand = /usr/bin/curl -C - %u > %o +#CleanMethod = KeepInstalled +Architecture = auto + +# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup +#IgnorePkg = +#IgnoreGroup = + +#NoUpgrade = +#NoExtract = + +# Misc options (all disabled by default) +#UseSyslog +#ShowSize +#UseDelta +#TotalDownload + +# +# REPOSITORIES +# - can be defined here or included from another file +# - pacman will search repositories in the order defined here +# - local/custom mirrors can be added here or in separate files +# - repositories listed first will take precedence when packages +# have identical names, regardless of version number +# - URLs will have $repo replaced by the name of the current repo +# - URLs will have $arch replaced by the name of the architecture +# +# Repository entries are of the format: +# [repo-name] +# Server = ServerName +# Include = IncludePath +# +# The header [repo-name] is crucial - it must be present and +# uncommented to enable the repo. +# + +# The testing repositories are disabled by default. To enable, uncomment the +# repo name header and Include lines. You can add preferred servers immediately +# after the header, and they will be used before the default mirrors. + +#[testing] +## Add your preferred servers here, they will be used first +#Include = /etc/pacman.d/mirrorlist + +[core] +# Add your preferred servers here, they will be used first +Include = /etc/pacman.d/mirrorlist + +[extra] +# Add your preferred servers here, they will be used first +Include = /etc/pacman.d/mirrorlist + +#[community-testing] +## Add your preferred servers here, they will be used first +#Include = /etc/pacman.d/mirrorlist + +[community] +# Add your preferred servers here, they will be used first +Include = /etc/pacman.d/mirrorlist + +# An example of a custom package repository. See the pacman manpage for +# tips on creating your own repositories. +#[custom] +#Server = file:///home/custompkgs + diff --git a/build_tools/l7/larch0/data/pacman.conf.repos b/build_tools/l7/larch0/data/pacman.conf.repos new file mode 100644 index 0000000..16628e2 --- /dev/null +++ b/build_tools/l7/larch0/data/pacman.conf.repos @@ -0,0 +1,14 @@ +# Package repository entries for pacman.conf +# '*platform*' will be replaced by 'i686' or 'x86_64' as appropriate. +# '*default*' will normally be replaced by 'Include = /etc/pacman.d/mirrorlist' +# (but for the installation: a 'mirrorlist' file in the working directory will +# be preferred, or - if neither exists - then 'data/mirrorlist') + + +# You can add your own custom repositories (anywhere). + +larch: Server = ftp://ftp.berlios.de/pub/larch/larch7.2/*platform* +#testing: *default* +core: *default* +extra: *default* +community: *default* diff --git a/build_tools/l7/larch0/data/requiredpacks b/build_tools/l7/larch0/data/requiredpacks new file mode 100644 index 0000000..0ca0a37 --- /dev/null +++ b/build_tools/l7/larch0/data/requiredpacks @@ -0,0 +1,32 @@ +## The packages (and groups) in this file will always be +## included in the larch installation. +## Packages (including those in groups marked with '*') entered +## here can still be vetoed in the profile's vetopacks file + +## Without the base group it won't be much of a system! +*base + +## Either aufs or unionfs must be included (but unionfs probably +## won't work as it hasn't been tested for so long). +aufs2 +aufs2-util + +## larch-live provides essential components of the larch system +larch-live + +## To make a system with the syslinux/isolinux bootloader +syslinux +mtools + +## To build an iso, cdrkit or cdrtools must be included +cdrkit +## To eject a cd +eject + +## For disk partitioning, formatting and labelling +dosfstools +parted + +## For the documentation and the possibility of making more larch media +larch + diff --git a/build_tools/l7/larch0/docs/BUGS_TODO b/build_tools/l7/larch0/docs/BUGS_TODO new file mode 100644 index 0000000..f4f3502 --- /dev/null +++ b/build_tools/l7/larch0/docs/BUGS_TODO @@ -0,0 +1,52 @@ +* larchin - only basic features exist, with no documentation. + + +Changes 7.1 - 7.2 + +* Completely reworked the command-line interface (and consequently all + the other code, too). Threading replaced to a large extent by separate + processes. The GUI is now just a front end to the command-line tools. + +*! Changed handling of pacman.conf. Now there is pacman.conf.repos + instead of pacman.conf.larch, I hope it will be a bit easier to + understand what happens when using a special version for installation. + +* 'include' facility in package files: '+' + relative or absolute path + +* Required/suggested packages included by default (data/requiredpacks) - + they can be excluded by putting them in the veto file. The whole + file can be overridden in addedpacks by starting it with '!!!'. + +* Include directive ('+' + absolute or relative path to file) in + package files. + +* Boot loader configs for GRUB and syslinux included in the image, plus + bootlines file, to ease transfer of built image to alternative medium. + vesamenu.c32 is no longer supplied with larch, it is fetched from the + Arch installation (syslinux). + +* A command line option to live_part.py is available to override the + profile's 'nosave' file, but this is always copied to the medium + ('larch/nosave') - if it is present - to indicate the profile's + 'intention'. + +* A file 'nosshkeys' in the profile suppresses generation of the host + sshkeys (if openssh is installed - if not they wouldn't have been + generated anyway). Previously this was only selectable as a direct + build option (not stored anywhere). + +* The root password can be supplied in the profile, in the file 'rootpw'. + Previously this was not easily settable. + +* Changed some options to mkisofs, generally to make it more similar to + the partition builder (no -publisher, use -V instead of -A so + that the name gets shown in file managers, -R instead of -r). + +* When building an isolinux image, the 'isohybrid' script is called, so + that the resulting 'iso' can be 'dd'ed to a USB-stick (see the isolinux + documentation). This does not make the USB-stick session-save capable + as the file-system it creates is not suitable, but it might be a + useful distribution feature. + +* Added ability to save and reuse generated locales, in a way similar + to the saving of system.sqf. diff --git a/build_tools/l7/larch0/docs/COPYING b/build_tools/l7/larch0/docs/COPYING new file mode 100644 index 0000000..d511905 --- /dev/null +++ b/build_tools/l7/larch0/docs/COPYING @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/build_tools/l7/larch0/docs/LICENCE b/build_tools/l7/larch0/docs/LICENCE new file mode 100644 index 0000000..9cd1e0c --- /dev/null +++ b/build_tools/l7/larch0/docs/LICENCE @@ -0,0 +1,16 @@ + + Licence: + + This software is released under the GNU GENERAL PUBLIC LICENSE. + See COPYING. + + Warranty: + + This software is distributed with NO WARRANTY, use it at your own risk. + + Author: + + This software was written by + + Michael Towers (larch42 at googlemail dot com) +
\ No newline at end of file diff --git a/build_tools/l7/larch0/docs/README b/build_tools/l7/larch0/docs/README new file mode 100644 index 0000000..a942df0 --- /dev/null +++ b/build_tools/l7/larch0/docs/README @@ -0,0 +1,23 @@ +larch +===== + +Author: Michael Towers (larch42 at googlemail dot com) +Licence: GPL (see COPYING, LICENCE) + +larch is essentially a collection of python scripts for building live +Arch Linux media, there is also a gui which uses the scripts as a backend. + +The command-line scripts are in the 'cli' directory, the gui code is in the +'gui' directory. + +There is quite extensive documentation in the docs directory, please read it. +docs/html/larch_quick.html gives basic set-up instructions. + +You need at least python (tested with 2.6), with the pexpect module, +and pyqt (tested with 4.7) for the gui. + +Logos are derived from the Arch Linux logos, and are released under a +Creative Commons Licence, see 'http://www.archlinux.org/art'. + +The larch project uses Arch Linux as its basis, but is not an official +Arch Linux ('http://www.archlinux.org') project. diff --git a/build_tools/l7/larch0/docs/html/archin.html b/build_tools/l7/larch0/docs/html/archin.html new file mode 100644 index 0000000..7673270 --- /dev/null +++ b/build_tools/l7/larch0/docs/html/archin.html @@ -0,0 +1,241 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + +<html> +<head> +<meta http-equiv="Content-type" content="text/html; charset=utf-8" /> +<title>Installation of the base Arch system</title> +<!-- (en) Add your meta data here --> + +<link href="css/larchdocs.css" rel="stylesheet" type="text/css"/> +<!--[if lte IE 7]> +<link href="css/yaml/core/iehacks.css" rel="stylesheet" type="text/css" /> +<![endif]--> +</head> + +<body> +<!-- skip link navigation --> +<ul id="skiplinks"> + <li><a class="skip" href="#col1">Skip to main content (Press Enter).</a></li> +</ul> + +<div class="page_margins"> + <div class="page"> + <div id="top"><div id="tm"></div></div> + <!-- begin: #col1 --> + <div id="col1" role="main"> + <div id="col1_content"> + <div id="header" role="banner"> + <h1><span><em>live Arch Linux</em> builder</span></h1> + </div> + + <!-- begin: #col3 navigation column --> + <div id="col3" role="complementary"> + <div id="col3_content"> + <img class="indent2" alt="larch logo" src="css/screen/larch150x.png" width="150" height="150" /> + <div class="vlist"> + <ul> + <li><a href="index.html"><h6>Table Of Contents</h6></a></li> + <li><a href="larchify.html"><h6>Next:</h6> + <div class="indent1">Building the live system</div></a></li> + <li><a href="larch_quick.html"><h6>Previous:</h6> + <div class="indent1">Quick Start</div></a></li> + </ul> + </div> + </div> + </div> + <!-- end: #col3 --> + +<div class="larchdocs"> +<h2 id="pagetitle" level="1">Installation of the base <em>Arch</em> system</h2> + +<p>The <em>larch live</em> system will normally be built from a fresh +(unmodified, unconfigured) <em>Arch</em> installation. The Installation stage, +based on the 'larch-archin' command, handles the creation of this installation +by downloading all the desired packages (if they are not already in the host's +package cache) and installing them to an empty directory (by default +'/home/larchbuild'). +</p> + +<p>Other approaches are possible, such as using an already existing system +or building a fresh installation in some other way. In that case you can skip +this page. +</p> + +<p>By default the package cache on the build host will be used, so that only +packages which have not already been downloaded will be fetched from the +chosen mirror. But it is possible to select another cache location, which +can also be on a remote machine, mounted using <em>sshfs</em> or <em>NFS</em>. +</p> + +<p>This raw installation will not normally be modified by <em>larch</em>, +so it can be reused, or even carefully experimented with. However, note +that any changes you make to this installation manually will not be +reflected in the profile, so it might be difficult to reproduce what you +have done at a later time, or to revert the changes. +If you want to configure your system, then the raw installation is probably +not the best place for it, consider rather using the 'rootoverlay' directory +in the profile. All files in this directory will 'overwrite' (well, 'overlay', +actually) corresponding files in the base installation, by placing them +in a higher layer in the <em>aufs</em> mount in the <em>live</em> system. +This makes it very easy to collect your own customizations in a way that +can be applied quickly to a future build. +</p> + +<p>See <a href="gui_installation.html">GUI Tab: Installation</a> for +details of the GUI for this process. +</p> + +<h3><a name="pacman_conf"></a>'pacman.conf' and 'mirrorlist'</h3> + +<p>To make it a little easier to manage upstream changes to the default +'pacman.conf', a separate file ('pacman.conf.repos') is used to specify +the repositories to use (the bit in 'pacman.conf' after the options). +There is a default version of this file in the <em>larch</em> package +at 'data/pacman.conf.repos', and for most simple installations this is +probably adequate, but if you need to change it you can place your own +version in the profile. +</p> +<p>Note that this file does not use the standard format, but +packs repository name and "server line" together on one line, separated +by ':'. There is no way to supply more than one "server line". There +are a couple of special 'codes', which <em>archin</em> will convert: + <ul> + <li>'*platform*' will be converted to 'i686' or 'x86_64' as + appropriate (according to the host).</li> + <li>'*default*' will be converted to the standard 'Include' entry. + This is normally 'Include = /etc/pacman.d/mirrorlist', but for + installation (only) this will be overridden if there is a 'mirrorlist' + file in the working directory - if neither exists, the fallback is + 'data/mirrorlist' within the <em>larch</em> base directory. + This latter file is not supplied in the 'larch' package, + as it is not intended for use on <em>Arch</em> + systems. When the 'larch-setup' script detects that no 'pacman' + command is available, it downloads the 'pacman-allin' package + and among the things that gets extracted from it is this + 'mirrorlist' file. + </li> + </ul> +Here is an example of a 'pacman.conf.repos' file: +</p> +<pre> +# Package repository entries for pacman.conf +# '*platform*' will be replaced by 'i686' or 'x86_64' as appropriate. +# '*default*' will be replaced by 'Include = /etc/pacman.d/mirrorlist' +# (but for the installation: a 'mirrorlist' file in the working directory will +# be preferred, or - if neither exists - then 'data/mirrorlist') + +# You can add your own custom repositories (anywhere). + +larch: Server = ftp://ftp.berlios.de/pub/larch/larch7.2/*platform* +#testing: *default* +core: *default* +extra: *default* +community: *default* +</pre> + +<p>The top part of the complete 'pacman.conf' (the options) is taken from +a normal default 'pacman.conf' supplied in the 'larch' package at +'data/pacman.conf'. +You can override this by placing your own version in the profile, as +'pacman.conf.options' (note that any repositories you might specify in +this file will be ignored). A further option is to specify a version of +the file 'pacman.conf.repos' to be used only for the installation (not +for the resulting <em>live</em> system. This is especially useful if +you have a local package repository/mirror. +</p> +<p>The complete 'pacman.conf' file is generated by combining the header +part and the repository part and is saved to a temporary location for +the installation. After the installation is complete a final version of +this file (that for the <em>live</em> system) is placed at +the standard location within the installation, '/etc/pacman.conf'. Note +that it is not placed in the overlay, but - as an exception to the rule - +directly within the installation. +</p> + +<h4>Usage example: The 'dummy' mirror</h4> +<p>During testing I found it useful to work with stable repositories. +I did this without creating a proper local mirror, but by creating a sort +of 'dummy' mirror containing only the ****.db.tar.gz files, relying on +the cache to supply the actual package files. +(The script 'repos.sh' supplied with <em>larch</em> in the +'scripts' directory can build these 'db' files from the current state of +the pacman sync database on the host.) +</p> + +<p>If you are running the commands on the console you can pass the path +to a customized repository list file with the '-r' option. Remeber this +file must be constructed as detailed above. +</p> + +<h3><a name="Custom_packages"></a>Custom packages</h3> + +<p>It is possible to include your own 'custom' packages in the installation. +Maybe ones you have compiled yourself, e.g. from the AUR, or modified versions +(fixes or customizations) of standard packages. To do this you need to put +your packages in a directory and run <strong>gen-repo</strong>, supplied with +<em>larch</em> in the 'scripts' directory, on this directory (run it without +arguments to get usage instructions). Then place an entry for this new +repository in your 'pacman.conf.repos'. +If your packages replace some in the existing repositories, your custom +repository needs to come before those repositories in 'pacman.conf.repos'. +Any packages you want installed now just need to be +listed in <strong>addedpacks</strong>. +</p> + + +<h3><a name="package_selection"></a>Selection of packages to be installed</h3> + +<p>The (compulsory) profile file 'addedpacks' contains a +list of packages +(just the package names, as supplied to 'pacman -S') to be installed, +one package name per line (empty lines and lines starting +with '#' are ignored). Also names of package groups may be included in this +file, to request installation of the whole group. If a group name is preceded +by '*', individual packages belonging to the group can be excluded via the +'vetopacks' file (see below) - without the '*' this exclusion +is not possible. It is also possible to +'include' other files by means of lines starting with '+' - this may be +followed by the absolute or relative path to the file to be included. +Package dependencies are handled by <em>pacman</em> automatically. +</p> +<p>The (optional) profile file 'vetopacks' allows packages to +be excluded from the installation list. This can be useful if individual +packages from a group should be excluded. However, note that inclusion of a +package in this file does not guarantee that it will not be installed - the +package is only removed from the installation list. If it is required by +another package it will be installed anyway. It is also possible to +'include' other files in the veto list using '+' lines. +</p> +<p>Certain 'required' and 'suggested' packages are included by +default, these are in the file 'data/requiredpacks' in the 'larch' package. +This file should generally not be edited, because an update of the 'larch' +package will overwrite any changes. Packages listed in this file can be +excluded by listing them in the profile 'vetopacks' file. +The whole file can be overridden in 'addedpacks' by +starting that with '!!!'. But only do that if you really know what you +are doing. +</p> + +</div> + + + <div class="topref"><a href="#top">Top</a></div> + </div> + <!-- begin: #footer --> + <div id="footer"> + <div id="footer-content" role="contentinfo">© 2010 Michael Towers<br /> + Page layout assisted by <a href="http://www.yaml.de/">YAML</a> and + <a href="http://www.kuwata-lab.com/tenjin/">pyTenjin</a> + </div> + </div> + <!-- end: #footer --> + </div> + <!-- end: #col1 --> + <div id="bottom"><div id="bl"><div id="bm"></div></div></div> + </div> +</div> +<!-- full skiplink functionality in webkit browsers --> +<script src="css/yaml/core/js/webkit-focusfix.js" type="text/javascript"></script> +</body> +</html> diff --git a/build_tools/l7/larch0/docs/html/css/larchdocs.css b/build_tools/l7/larch0/docs/html/css/larchdocs.css new file mode 100644 index 0000000..cc8e6b7 --- /dev/null +++ b/build_tools/l7/larch0/docs/html/css/larchdocs.css @@ -0,0 +1,13 @@ +@charset "UTF-8";
+
+/* import core styles | Basis-Stylesheets einbinden */
+@import url(yaml/core/base.css);
+@import url(yaml/screen/content_default.css);
+
+/* import screen layout | Screen-Layout einbinden */
+@import url(screen/nav_vlist.css);
+@import url(screen/basemod.css);
+
+/* import print layout | Druck-Layout einbinden */
+@import url(yaml/print/print_100_draft.css);
+
diff --git a/build_tools/l7/larch0/docs/html/css/screen/bark.jpg b/build_tools/l7/larch0/docs/html/css/screen/bark.jpg Binary files differnew file mode 100644 index 0000000..5d5cc5b --- /dev/null +++ b/build_tools/l7/larch0/docs/html/css/screen/bark.jpg diff --git a/build_tools/l7/larch0/docs/html/css/screen/basemod.css b/build_tools/l7/larch0/docs/html/css/screen/basemod.css new file mode 100644 index 0000000..84d49d5 --- /dev/null +++ b/build_tools/l7/larch0/docs/html/css/screen/basemod.css @@ -0,0 +1,162 @@ +@charset "UTF-8";
+/* This uses YAML's basic containers, but in a highly customized way */
+
+@media screen, projection
+{
+ /**
+ * (en) Forcing vertical scrollbars in IE8, Firefox, Webkit & Opera
+ * (de) Erzwingen vertikaler Scrollbalken in IE8, Firefox, Webkit & Opera
+ *
+ * @workaround
+ * @affected IE8, FF, Webkit, Opera
+ * @css-for all
+ * @valid CSS3
+ */
+
+ body { overflow-y: scroll; }
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * (en) Formatting YAML's basic layout elements
+ * (de) Gestaltung des YAML Basis-Layouts
+ */
+
+ /* (en) Marginal areas & page background */
+ /* (de) Randbereiche & Seitenhintergrund */
+ body {background: #c55500 url(bark.jpg) repeat fixed;}
+
+ /* (en) Centering layout in old IE-versions */
+ /* (de) Zentrierung des Layouts in alten IE-versionen */
+ body { text-align: center; }
+ .page_margins { text-align:left; margin: 20px auto; }
+
+ /* (en) Layout: width, background, borders */
+ /* (de) Layout: Breite, Hintergrund, Rahmen */
+ .page_margins {
+ min-width: 640px; max-width: 70em;
+ }
+ .page {
+ font-size: 125%;
+ margin: 0 20px;
+ background: url(top-left.png) no-repeat left top;
+ }
+
+ #top {
+ height: 20px;
+ margin-left: 200px;
+ background: url(top-right.png) top right no-repeat;
+ }
+ #tm { height: 100%; margin-right: 20px; background: #abf39c; }
+
+ #bottom {
+ height: 20px;
+ background: url(bottom-right.png) bottom right no-repeat;
+ }
+ #bl { height: 100%; background: url(bottom-left.png) bottom left no-repeat; }
+ #bm { height: 100%; margin-left: 200px; margin-right: 20px; background: #abf39c; }
+
+
+ /* (en) Designing main layout elements */
+ /* (de) Gestaltung der Hauptelemente des Layouts */
+
+ #header {
+ padding: 0 2em 1em 50px;
+ border-bottom: 1px #45f202 solid;
+ margin-bottom: 20px;
+ }
+ #header h1 {
+ font-size:2.5em;
+ letter-spacing:-1px;
+ line-height:65%;
+ color:#c55500;
+ }
+
+ #footer { padding: 10px 20px 0 20px; }
+ #footer-content {
+ color:#886;
+ padding: 10px 20px;
+ border: 1px #c55500 solid;
+ line-height: 1.5em;
+ }
+ #footer a { color: #888; font-weight: bold; }
+ #footer a:focus { color: #D087C7; text-decoration: underline; }
+ #footer a:hover,
+ #footer a:active { color: #4D87C7; text-decoration: underline; }
+
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * (en) Formatting content containers
+ * (de) Formatierung der Inhalts-Container
+ */
+
+ /* main column | Hauptspalte */
+ #col1 {
+ float: none;
+ width: 100%;
+ background: #abf39c url(green-gradient200.jpg) repeat-y;
+ }
+ #col1_content { padding: 0 20px; min-height: 400px; }
+
+ #col3 { width: 100%; margin: 0; }
+ .vlist h6, .vlist .indent1 { display: inline; }
+ .indent2 { float: right ; }
+ .vlist { margin-top: 10px; width: 360px; }
+ li h6 { font-weight: bold; }
+ .indent1 { margin-left: 10px; }
+ .level1 { font-size: 120%; }
+ .level2 { font-size: 110%; }
+ .rlink { font-size: 150%; color: #b04000; }
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * (en) Styling of layout specific elements
+ * (de) Gestaltung layoutabhängiger Elemente
+ */
+
+ li { margin-bottom: 3px; }
+ h4 { font-weight: bold; }
+ table { border-top: 2px solid #c55500; border-bottom: 2px solid #c55500; margin: 15px; }
+ tbody td, tbody th { border: 1px solid #c55500; }
+ .empty td { padding: 1px; }
+
+ .topref { padding: 20px 40px; }
+ .topref a {
+ font-weight: bold;
+ padding: 10px;
+ border-top: 3px solid #45f202;
+ border-bottom: 3px solid #45f202;
+ }
+ .topref a:focus { background: #45f202; text-decoration: none; }
+ .topref a:hover,
+ .topref a:active { background: #e08000; text-decoration: none; }
+
+ pre { overflow: auto; background: #a0f090; }
+ a, a:visited { color: #c55500 }
+ a:hover, a:active { color: #003366 }
+
+/**
+ * ------------------------------------------------------------------------------------------------- #
+ *
+ * Skiplinks
+ *
+ * (en) Visual styling for skiplink navigation
+ * (de) Visuelle Gestaltung der Skiplink-Navigation
+ *
+ * @section content-skiplinks
+ */
+
+ #skiplinks a.skip:focus,
+ #skiplinks a.skip:active {
+ color: #fff;
+ background: #333;
+ border-bottom: 1px #000 solid;
+ padding: 10px 0;
+ text-decoration:none;
+ }
+ +}
+
diff --git a/build_tools/l7/larch0/docs/html/css/screen/bottom-left.png b/build_tools/l7/larch0/docs/html/css/screen/bottom-left.png Binary files differnew file mode 100644 index 0000000..aad30da --- /dev/null +++ b/build_tools/l7/larch0/docs/html/css/screen/bottom-left.png diff --git a/build_tools/l7/larch0/docs/html/css/screen/bottom-right.png b/build_tools/l7/larch0/docs/html/css/screen/bottom-right.png Binary files differnew file mode 100644 index 0000000..2fb2fce --- /dev/null +++ b/build_tools/l7/larch0/docs/html/css/screen/bottom-right.png diff --git a/build_tools/l7/larch0/docs/html/css/screen/green-gradient200.jpg b/build_tools/l7/larch0/docs/html/css/screen/green-gradient200.jpg Binary files differnew file mode 100644 index 0000000..5a5bacf --- /dev/null +++ b/build_tools/l7/larch0/docs/html/css/screen/green-gradient200.jpg diff --git a/build_tools/l7/larch0/docs/html/css/screen/larch150x.png b/build_tools/l7/larch0/docs/html/css/screen/larch150x.png Binary files differnew file mode 100644 index 0000000..3c33343 --- /dev/null +++ b/build_tools/l7/larch0/docs/html/css/screen/larch150x.png diff --git a/build_tools/l7/larch0/docs/html/css/screen/nav_vlist.css b/build_tools/l7/larch0/docs/html/css/screen/nav_vlist.css new file mode 100644 index 0000000..d40631f --- /dev/null +++ b/build_tools/l7/larch0/docs/html/css/screen/nav_vlist.css @@ -0,0 +1,74 @@ +@charset "UTF-8";
+/**
+ * Slightly modified from:
+ *
+ * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
+ *
+ * (en) Vertical list navigation "vlist"
+ * (de) Vertikale Navigationsliste "vlist"
+ *
+ * @copyright Copyright 2005-2009, Dirk Jesse
+ * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
+ * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
+ * @link http://www.yaml.de
+ * @package yaml
+ * @version 3.2
+ * @revision $Revision:392 $
+ * @lastmodified $Date:2009-07-05 12:18:40 +0200 (So, 05. Jul 2009) $
+ */
+
+@media all
+{
+ .vlist { + overflow:hidden;
+ margin:0 0 1.5em 0;
+ border-top:4px #45f202 solid;
+ border-bottom:2px #45f202 solid;
+ }
+
+ .vlist ul {
+ margin:0;
+ padding:0;
+ }
+
+ .vlist li {
+ float:left; /* LTR */
+ width:100%;
+ margin:0;
+ padding:0;
+ }
+
+ .vlist a,
+ .vlist strong,
+ .vlist span {
+ display:block;
+ padding:3px 0px 3px 10%;
+ text-decoration:none;
+ border-bottom:2px #45f202 solid;
+ }
+
+ .vlist a,
+ .vlist a:visited {
+ color:#444;
+ }
+
+ .vlist li span {
+ display:block;
+ font-weight:bold;
+ border-bottom:2px #45f202 solid;
+ }
+
+ /* active list element */
+ .vlist li.active {
+ color:#fff;
+ background-color:#800;
+ font-weight:bold;
+ }
+
+ /* Level 1 */
+ .vlist li a { padding-left: 15px; }
+ .vlist li a:focus { background-color:#45f202; }
+ .vlist li a:hover,
+ .vlist li a:active { background-color:#e08000; color:#fff; }
+
+}
diff --git a/build_tools/l7/larch0/docs/html/css/screen/top-left.png b/build_tools/l7/larch0/docs/html/css/screen/top-left.png Binary files differnew file mode 100644 index 0000000..2a66a57 --- /dev/null +++ b/build_tools/l7/larch0/docs/html/css/screen/top-left.png diff --git a/build_tools/l7/larch0/docs/html/css/screen/top-right.png b/build_tools/l7/larch0/docs/html/css/screen/top-right.png Binary files differnew file mode 100644 index 0000000..c61ad6e --- /dev/null +++ b/build_tools/l7/larch0/docs/html/css/screen/top-right.png diff --git a/build_tools/l7/larch0/docs/html/css/yaml/core/base.css b/build_tools/l7/larch0/docs/html/css/yaml/core/base.css new file mode 100644 index 0000000..3619374 --- /dev/null +++ b/build_tools/l7/larch0/docs/html/css/yaml/core/base.css @@ -0,0 +1,277 @@ +@charset "UTF-8";
+/**
+ * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
+ *
+ * (en) YAML core stylesheet
+ * (de) YAML Basis-Stylesheet
+ *
+ * Don't make any changes in this file!
+ * Your changes should be placed in any css-file in your own stylesheet folder.
+ *
+ * @copyright Copyright 2005-2009, Dirk Jesse
+ * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
+ * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
+ * @link http://www.yaml.de
+ * @package yaml
+ * @version 3.2
+ * @revision $Revision:426 $
+ * @lastmodified $Date:2009-10-21 21:12:11 +0200 (Mi, 21. Okt 2009) $
+ */
+
+@media all
+{
+ /**
+ * @section browser reset
+ * @see http://www.yaml.de/en/documentation/css-components/base-stylesheet.html
+ */
+
+ /* (en) Global reset of paddings and margins for all HTML elements */
+ /* (de) Globales Zurücksetzen der Innen- und Außenabstände für alle HTML-Elemente */
+ * { margin:0; padding:0; }
+
+ /* (en) Correction:margin/padding reset caused too small select boxes. */
+ /* (de) Korrektur:Das Zurücksetzen der Abstände verursacht zu kleine Selectboxen. */
+ option { padding-left:0.4em; } /* LTR */
+ select { padding:1px; }
+
+ /**
+ * (en) Global fix of the Italics bugs in IE 5.x and IE 6
+ * (de) Globale Korrektur des Italics Bugs des IE 5.x und IE 6
+ *
+ * @bugfix
+ * @affected IE 5.x/Win, IE6
+ * @css-for IE 5.x/Win, IE6
+ * @valid yes
+ */
+ * html body * { overflow:visible; }
+ * html iframe, * html frame { overflow:auto; }
+ * html frameset { overflow:hidden; }
+
+ body {
+ /* (en) Fix for rounding errors when scaling font sizes in older versions of Opera browser */
+ /* (de) Beseitigung von Rundungsfehler beim Skalieren von Schriftgrößen in älteren Opera Versionen */
+ font-size:100.01%;
+
+ /* (en) Standard values for colors and text alignment */
+ /* (de) Vorgabe der Standardfarben und Textausrichtung */
+ background:#fff;
+ color:#000;
+ text-align:left; /* LTR */
+ }
+
+ /* (en) avoid visible outlines on DIV containers in Webkit browsers */
+ /* (de) Vermeidung sichtbarer Outline-Rahmen in Webkit-Browsern */
+ div { outline:0 none; }
+
+ /* (en) Clear borders for <fieldset> and <img> elements */
+ /* (de) Rahmen für <fieldset> und <img> Elemente löschen */
+ fieldset, img { border:0 solid; }
+
+ /* (en) new standard values for lists, blockquote and cite */
+ /* (de) Neue Standardwerte für Listen & Zitate */
+ ul, ol, dl { margin:0 0 1em 1em; } /* LTR */
+ li {
+ line-height:1.5em;
+ margin-left:0.8em; /* LTR */
+ }
+
+ dt { font-weight:bold; }
+ dd { margin:0 0 1em 0.8em; } /* LTR */
+
+ blockquote { margin:0 0 1em 0.8em; } /* LTR */
+
+ blockquote:before, blockquote:after,
+ q:before, q:after { content:""; }
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * @section clearing methods
+ * @see http://yaml.de/en/documentation/basics/general.html
+ */
+
+ /* (en) clearfix method for clearing floats */
+ /* (de) Clearfix-Methode zum Clearen der Float-Umgebungen */
+ .clearfix:after {
+ clear:both;
+ content:".";
+ display:block;
+ font-size:0;
+ height:0;
+ visibility:hidden;
+ }
+
+ /* (en) essential for Safari browser !! */
+ /* (de) Diese Angabe benötigt der Safari-Browser zwingend !! */
+ .clearfix { display:block; }
+
+ /* (en) overflow method for clearing floats */
+ /* (de) Overflow-Methode zum Clearen der Float-Umgebungen */
+ .floatbox { overflow:hidden; }
+
+ /* (en) IE-Clearing:Only used in Internet Explorer, switched on in iehacks.css */
+ /* (de) IE-Clearing:Benötigt nur der Internet Explorer und über iehacks.css zugeschaltet */
+ #ie_clearing { display:none; }
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * @section hidden elements | Versteckte Elemente
+ * @see http://www.yaml.de/en/documentation/basics/skip-links.html
+ *
+ * (en) skip links and hidden content
+ * (de) Skip-Links und versteckte Inhalte
+ */
+
+ /* (en) classes for invisible elements in the base layout */
+ /* (de) Klassen für unsichtbare Elemente im Basislayout */
+ .skip, .hideme, .print {
+ position:absolute;
+ top:-32768px;
+ left:-32768px; /* LTR */
+ }
+
+ /* (en) make skip links visible when using tab navigation */
+ /* (de) Skip-Links für Tab-Navigation sichtbar schalten */
+ .skip:focus, .skip:active {
+ position:static;
+ top:0;
+ left:0;
+ }
+
+ /* skiplinks:technical setup */
+ #skiplinks {
+ position:absolute;
+ top:0px;
+ left:-32768px;
+ z-index:1000;
+ width:100%;
+ margin:0;
+ padding:0;
+ list-style-type:none;
+ }
+
+ #skiplinks a.skip:focus,
+ #skiplinks a.skip:active {
+ left:32768px;
+ outline:0 none;
+ position:absolute;
+ width:100%;
+ }
+}
+
+@media screen, projection
+{
+
+ /**
+ * @section base layout | Basis Layout
+ * @see http://www.yaml.de/en/documentation/css-components/base-stylesheet.html
+ *
+ * |-------------------------------|
+ * | #header |
+ * |-------------------------------|
+ * | #col1 | #col3 | #col2 |
+ * | 200 px | flexible | 200px |
+ * |-------------------------------|
+ * | #footer |
+ * |-------------------------------|
+ */
+
+ #header { position:relative; }
+
+ /* (en) Text Alignment for #topnav content */
+ /* (de) Textausrichtung für #topnav Inhalte */
+ #topnav { text-align:right; } /* LTR */
+
+ /* (en) Absolute positioning only within #header */
+ /* (de) Absolute Positionierung erfolgt nur innerhalb von #header */
+ #header #topnav {
+ position:absolute;
+ top:10px;
+ right:10px; /* LTR */
+ }
+
+ /* (en) Backup for correct positioning */
+ /* (de) Absicherung korrekte Positionierung */
+ #header, #nav, #main, #footer { clear:both; }
+
+ #col1 { float:left; width:200px; }
+ #col2 { float:right; width:200px; }
+ #col3 { width:auto; margin:0 200px; }
+
+ /* (en) Preparation for absolute positioning within content columns */
+ /* (de) Vorbereitung für absolute Positionierungen innerhalb der Inhaltsspalten */
+ #col1_content, #col2_content, #col3_content { position:relative; }
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * @section subtemplates
+ * @see http://www.yaml.de/en/documentation/practice/subtemplates.html
+ */
+ .subcolumns { width:100%; overflow:hidden; }
+
+ /* (en) alternative class for optional support of old Mozilla/Netscape browers */
+ /* (de) Alternative Klasse zur optionalen Unterstützung alter Mozilla/Netscape-Brower */
+ .subcolumns_oldgecko { width:100%; float:left; }
+
+ .c20l, .c25l, .c33l, .c40l, .c38l, .c50l, .c60l, .c62l, .c66l, .c75l, .c80l {float:left; }
+ .c20r, .c25r, .c33r, .c40r, .c38r, .c50r, .c60r, .c66r, .c62r, .c75r, .c80r {float:right; margin-left:-5px; }
+
+ .c20l, .c20r { width:20%; }
+ .c40l, .c40r { width:40%; }
+ .c60l, .c60r { width:60%; }
+ .c80l, .c80r { width:80%; }
+ .c25l, .c25r { width:25%; }
+ .c33l, .c33r { width:33.333%; }
+ .c50l, .c50r { width:50%; }
+ .c66l, .c66r { width:66.666%; }
+ .c75l, .c75r { width:75%; }
+ .c38l, .c38r { width:38.2%; }
+ .c62l, .c62r { width:61.8%; }
+
+ .subc { padding:0 0.5em; }
+ .subcl { padding:0 1em 0 0; }
+ .subcr { padding:0 0 0 1em; }
+
+ .equalize, .equalize .subcolumns { overflow:visible; display:table; table-layout:fixed; }
+
+ .equalize > div {
+ display:table-cell;
+ float:none;
+ margin:0;
+ overflow:hidden;
+ vertical-align:top;
+ }
+}
+
+@media print
+{
+ /**
+ * (en) float clearing for .floatbox and subtemplates. Uses display:table to avoid bugs in FF & IE
+ * (de) Float Clearing für .floatbox und die Subtemplates. Verwendet display:table, um Darstellungsprobleme im FF & IE zu vermeiden
+ *
+ * @bugfix
+ * @since 3.0
+ * @affected FF2.0, FF3.0, IE7
+ * @css-for all browsers
+ * @valid yes
+ */
+
+ .subcolumns > div,
+ .floatbox {
+ display:table;
+ overflow:visible;
+ }
+
+ /* (en) make .print class visible */
+ /* (de) .print-Klasse sichtbar schalten */
+ .print {
+ position:static;
+ left:0;
+ }
+
+ /* (en) generic class to hide elements for print */
+ /* (de) Allgemeine CSS Klasse, um beliebige Elemente in der Druckausgabe auszublenden */
+ .noprint { display:none !important; }
+}
diff --git a/build_tools/l7/larch0/docs/html/css/yaml/core/iehacks.css b/build_tools/l7/larch0/docs/html/css/yaml/core/iehacks.css new file mode 100644 index 0000000..e56d2b7 --- /dev/null +++ b/build_tools/l7/larch0/docs/html/css/yaml/core/iehacks.css @@ -0,0 +1,355 @@ +@charset "UTF-8";
+/**
+ * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
+ *
+ * (en) YAML core stylesheet - structure-independent bugfixes of IE/Win CSS-bugs
+ * (de) YAML Basis-Stylesheet - Strukturunabhängige Bugfixes von CSS-Bugs des IE/Win
+ *
+ * Don't make any changes in this file!
+ * Your changes should be added to a separate patch-file.
+ *
+ * @copyright Copyright 2005-2009, Dirk Jesse
+ * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
+ * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
+ * @link http://www.yaml.de
+ * @package yaml
+ * @version 3.2
+ * @revision $Revision:426 $
+ * @lastmodified $Date:2009-10-21 21:12:11 +0200 (Mi, 21. Okt 2009) $
+ * @appdef yaml
+ */
+
+@media all
+{
+ /**
+ * (en) Debugging:When you see a green background, IE is getting this stylesheet
+ * (de) Fehlersuche:Hintergrund leuchtet grün, wenn das Stylesheet korrekt geladen wurde
+ *
+ * @debug
+ * @app-yaml-default disabled
+ */
+
+ /* body { background:#0f0; background-image:none; } */
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * (en) No need to force scrollbars in older IE's - it even makes problems in IE6 when set
+ * (de) Scrollbar-Fix wird in alten IE's nicht benötigt, zudem verursacht der Fix Probleme im IE6
+ *
+ * @workaround
+ * @affected IE6, IE7
+ * @css-for IE6, IE7
+ * @valid no
+ */
+
+ body { o\verflow:visible; }
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * (en) Fixes IE5.x and IE6 overflow behavior of textarea and input elements elements
+ * (de) Korrigiert das fehlerhafte overflow-Verhalten von textarea und input-Elementen
+ *
+ * @workaround
+ * @affected IE 5.x/Win, IE6
+ * @css-for IE 5.x/Win, IE6
+ * @valid no
+ */
+
+ * html textarea { overflow:scroll; overflow-x:hidden; }
+ * html input { overflow:hidden; }
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * (en) Stability fixes with 'position:relative'
+ * (de) Stabilitätsverbesserungen durch 'position:relative'
+ *
+ * Essential for correct scaling in IE7 (body). IE5 must get static positioned body instead.
+ * Helpful to fix several possible problems in older IE versions (#main).
+ *
+ * @bugfix
+ * @affected IE 5.x/Win, IE6, IE7
+ * @css-for IE 5.x/Win, IE6, IE7
+ * @valid yes
+ */
+
+ body,
+ #main { position:relative; }
+ * html body { position:static; }
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * (en) Clearfix Method for containing floats in IE
+ * (de) Clearfix-Anpassung für diverse IE-Versionen
+ *
+ * @workaround
+ * @see http://www.456bereastreet.com/archive/200603/new_clearing_method_needed_for_ie7/#comment28
+ * @affected IE 5.x/Win, IE6, IE7
+ * @css-for IE 5.x/Win, IE6, IE7
+ * @valid yes
+ */
+
+ .clearfix { display:inline-block; } /* ... especial for IE7 */
+ .clearfix { display:block; } /* ... für IE5,IE6,IE7 */
+ * html .clearfix { height:1%; } /* ... für IE5 + IE6/Win | hasLayout aktivieren */
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * (en) Adjustment of .floatbox class for IE
+ * (de) Anpassung der .floatbox-Klasse für IE
+ *
+ * @workaround
+ * @affected IE 5.x/Win, IE6, IE7
+ * @css-for IE 5.x/Win, IE6, IE7
+ * @valid yes
+ */
+
+ .floatbox { width:100%; }
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * (en) Special class for oversized content element
+ * (de) Spezielle Klasse für übergroße Inhaltselemente
+ *
+ * @workaround
+ * @affected IE 5.x/Win, IE6
+ * @css-for IE 5.x/Win, IE6
+ * @valid yes
+ */
+
+ .slidebox {
+ position:relative;
+ margin-right:-1000px;
+ height:1%;
+ }
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * (en):Bugfix for partially displayed column separators
+ * (de):Bugfix für unvollständige Darstellung der Spalteninhalte / Spaltentrenner
+ *
+ * @bugfix
+ * @affected IE 5.x/Win, IE6
+ * @css-for IE 5.x/Win, IE6
+ * @valid yes
+ */
+
+ * html #col1,
+ * html #col2,
+ * html #col3 { position:relative; }
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * (en) Preventing several css bugs by forcing "hasLayout"
+ * (de) Vermeidung verschiedenster Bugs durch Erzwingen von "hasLayout"
+ *
+ * @workaround
+ * @affected IE 5.x/Win, IE6, IE7
+ * @css-for IE 5.x/Win, IE6, IE7
+ * @valid no
+ */
+
+ body { height:1%; }
+ .page_margins, .page, #header, #nav, #main, #footer { zoom:1; } /* IE6 & IE7 */
+ * html .page_margins, * html .page { height:1%; hei\ght:auto; } /* IE 5.x & IE6 | IE6 only */
+ * html #header, * html #nav, * html #main, * html #footer { width:100%; wid\th:auto; } /* IE 5.x & IE6 | IE6 only */
+
+ /* trigger hasLayout to force containing content */
+ .subc, .subcl, .subcr { height:1%; }
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * Disappearing List-Background Bug
+ * @see http://www.positioniseverything.net/explorer/ie-listbug.html
+ *
+ * @bugfix
+ * @affected IE 5.x/Win, IE6
+ * @css-for IE 5.x/Win, IE6
+ * @valid yes
+ */
+
+ * html ul, * html ol, * html dl { position:relative; }
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * List-Numbering Bug
+ *
+ * @bugfix
+ * @affected IE 5.x/Win, IE6, IE7
+ * @css-for IE 5.x/Win, IE6, IE7
+ * @valid yes
+ */
+
+ body ol li { display:list-item; }
+
+ /**
+ * Form related bugfixes
+ *
+ * @bugfix
+ * @affected IE 5.x/Win, IE6, IE7
+ * @css-for IE 5.x/Win, IE6, IE7
+ * @valid no
+ */
+ fieldset, legend { position:relative; }
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * (en) Workaround for 'collapsing margin at #col3' when using CSS-property clear
+ * Left margin of #col3 collapses when using clear:both in 1-3-2 (or 2-3-1) layout and right column is the
+ * longest and left column is the shortest one. For IE6 and IE7 a special workaround was developed
+ * in YAML.
+ *
+ * (de) Workaround für 'kollabierenden Margin an #col3' bei Verwendung der CSS-Eigenschaft clear
+ * Der linke Margin von #col3 kollabiert bei der Verwendung von clear:both im 1-3-2 (oder 2-3-1) Layout
+ * wenn gleichzeitig die linke Spalte die kürzeste und die rechte die längste ist. Im IE6 und IE7 lässt
+ * sich der Bug durch eine speziell für YAML entwickelten Workaround umgehen.
+ *
+ * @workaround
+ * @affected IE 5.x/Win, IE6, IE7
+ * @css-for IE 5.x/Win, IE6, IE7
+ * @valid no
+ */
+
+ html #ie_clearing {
+ /* (en) Only a small help for debugging */
+ /* (de) Nur eine kleine Hilfe zur Fehlersuche */
+ position:static;
+
+ /* (en) Make container visible in IE */
+ /* (de) Container sichtbar machen im IE */
+ display:block;
+
+ /* (en) No fix possible in IE5.x, normal clearing used instead */
+ /* (de) Kein Fix im IE5.x möglich, daher normales Clearing */
+ \clear:both;
+
+ /* (en) forcing clearing-like behavior with a simple oversized container in IE6 & IE7*/
+ /* (de) IE-Clearing mit 100%-DIV für IE6 bzw. übergroßem Container im IE7 */
+ width:100%;
+ font-size:0px;
+ margin:-2px 0 -1em 1px;
+ }
+
+ * html #ie_clearing { margin:-2px 0 -1em 0; }
+ #col3_content { margin-bottom:-2px; }
+
+ /* (en) avoid horizontal scrollbars in IE7 in borderless layouts because of negative margins */
+ /* (de) Vermeidung horizontaler Scrollbalken bei randabfallenden Layouts im IE7 */
+ html { margin-right:1px; }
+ * html { margin-right:0; }
+
+ /* (en) Bugfix:Essential for IE7 */
+ /* (de) Bugfix:Notwendig im IE7 */
+ #col3 { position:relative; }
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * IE/Win Guillotine Bug
+ * @see http://www.positioniseverything.net/explorer/guillotine.html
+ *
+ * @workaround
+ * @affected IE 5.x/Win, IE6
+ * @css-for IE 5.x/Win, IE6
+ * @valid yes
+ */
+
+ * html body a, * html body a:hover { background-color:transparent; }
+
+}
+
+@media screen, projection
+{
+ /**
+ * (en) IE-Adjustments for content columns and subtemplates
+ * (de) IE-Anpassung für Spaltencontainer und Subtemplates
+ *
+ * Doubled Float-Margin Bug
+ * @see http://positioniseverything.net/explorer/doubled-margin.html
+ *
+ * @bugfix
+ * @affected IE 5.x/Win, IE6
+ * @css-for IE 5.x/Win, IE6, IE7
+ * @valid yes
+ */
+ #col1, #col2 { display:inline; }
+
+ .c20l, .c25l, .c33l, .c38l, .c40l, .c50l, .c60l, .c62l, .c66l, .c75l, .c80l,
+ .c20r, .c25r, .c33r, .c38r, .c40r, .c50r, .c60r, .c66r, .c62r, .c75r, .c80r { display:inline; }
+
+ /* Fix for:"Linking to anchors in elements within the containing block" Problem in IE5.x & IE 6.0 */
+ * html .equalize, * html .equalize .subcolumns { overflow:visible; display:block; }
+ .equalize, .equalize .subcolumns { overflow:hidden; display:block; }
+
+ /* transform CSS tables back into floats */
+ .equalize .c20l,.equalize .c40l,.equalize .c60l,.equalize .c80l,
+ .equalize .c25l,.equalize .c33l,.equalize .c38l,.equalize .c50l,
+ .equalize .c62l,.equalize .c66l,.equalize .c75l {
+ float:left; display:inline;
+ padding-bottom:32767px;
+ margin-bottom:-32767px;
+ }
+ .equalize .c20r,.equalize .c40r,.equalize .c60r,.equalize .c80r,
+ .equalize .c25r,.equalize .c33r,.equalize .c38r,.equalize .c50r,
+ .equalize .c62r,.equalize .c66r,.equalize .c75r {
+ float:right; margin-left:-5px; display:inline;
+ padding-bottom:32767px;
+ margin-bottom:-32767px;
+ }
+
+ .no-ie-padding .c20l,.no-ie-padding .c40l,.no-ie-padding .c60l,.no-ie-padding .c80l,
+ .no-ie-padding .c20r,.no-ie-padding .c40r,.no-ie-padding .c60r,.no-ie-padding .c80r,
+ .no-ie-padding .c25l,.no-ie-padding .c33l,.no-ie-padding .c38l,.no-ie-padding .c50l,
+ .no-ie-padding .c62l,.no-ie-padding .c66l,.no-ie-padding .c75l,
+ .no-ie-padding .c25r,.no-ie-padding .c33r,.no-ie-padding .c38r,.no-ie-padding .c50r,
+ .no-ie-padding .c62r,.no-ie-padding .c66r,.no-ie-padding .c75r {
+ padding-bottom:0;
+ margin-bottom:0;
+ }
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * Internet Explorer and the Expanding Box Problem
+ * @see http://www.positioniseverything.net/explorer/expandingboxbug.html
+ *
+ * @workaround
+ * @affected IE 5.x/Win, IE6
+ * @css-for IE 5.x/Win, IE6
+ * @valid yes
+ */
+
+ * html #col1_content,
+ * html #col2_content,
+ * html #col3_content { word-wrap:break-word; }
+
+ /* avoid growing widths */
+ * html .subc,
+ * html .subcl,
+ * html .subcr { word-wrap:break-word; o\verflow:hidden; }
+}
+
+@media print
+{
+ /**
+ * (en) Avoid unneeded page breaks of #col3 content in print layout.
+ * (de) Vermeiden von unnötigen Seitenumbrüchen beim Ausdruck der Spalte #col3.
+ *
+ * @bugfix
+ * @affected IE7
+ * @css-for IE 5.x/Win, IE6, IE7
+ * @valid yes
+ */
+
+ #col3 { height:1%; }
+}
diff --git a/build_tools/l7/larch0/docs/html/css/yaml/core/js/webkit-focusfix.js b/build_tools/l7/larch0/docs/html/css/yaml/core/js/webkit-focusfix.js new file mode 100644 index 0000000..29e70d4 --- /dev/null +++ b/build_tools/l7/larch0/docs/html/css/yaml/core/js/webkit-focusfix.js @@ -0,0 +1,40 @@ +/**
+ * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
+ *
+ * (en) Workaround for Webkit browser to fix focus problems when using skiplinks
+ * (de) Workaround für Webkit-Browser, um den Focus zu korrigieren, bei Verwendung von Skiplinks
+ *
+ * @note inspired by Paul Ratcliffe's article
+ * http://www.communis.co.uk/blog/2009-06-02-skip-links-chrome-safari-and-added-wai-aria
+ *
+ * @copyright Copyright 2005-2009, Dirk Jesse
+ * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
+ * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
+ * @link http://www.yaml.de
+ * @package yaml
+ * @version 3.2
+ * @revision $Revision: 430 $
+ * @lastmodified $Date: 2009-10-27 21:15:57 +0100 (Di, 27. Okt 2009) $
+ */
+
+var is_webkit = navigator.userAgent.toLowerCase().indexOf('webkit') > -1;
+
+if(is_webkit)
+{
+ var i;
+ var skiplinks = []
+
+ if ( document.getElementsByClassName !== undefined) {
+ skiplinks = document.getElementsByClassName('skip');
+
+ for (i=0; i<skiplinks.length; i++) {
+ var target = skiplinks[i].href.substr(skiplinks[i].href.indexOf('#')+1);
+ var targetElement = document.getElementById(target);
+
+ targetElement.href = '#'+target;
+ targetElement.setAttribute("tabindex", "0");
+
+ skiplinks[i].setAttribute("onclick", "document.getElementById('"+target+"').focus();");
+ }
+ }
+}
\ No newline at end of file diff --git a/build_tools/l7/larch0/docs/html/css/yaml/core/slim_base.css b/build_tools/l7/larch0/docs/html/css/yaml/core/slim_base.css new file mode 100644 index 0000000..a2013e8 --- /dev/null +++ b/build_tools/l7/larch0/docs/html/css/yaml/core/slim_base.css @@ -0,0 +1,6 @@ +@charset "UTF-8";
+/* "Yet Another Multicolumn Layout" v 3.2 (c) by Dirk Jesse (http://www.yaml.de)
+* $Revision: 430 $ $Date: 2009-10-27 21:15:57 +0100 (Di, 27. Okt 2009) $ */
+@media all{*{margin:0;padding:0}option{padding-left:0.4em}select{padding:1px}* html body *{overflow:visible}* html iframe,* html frame{overflow:auto}* html frameset{overflow:hidden}body{font-size:100.01%;background:#fff;color:#000;text-align:left}div{outline:0 none}fieldset,img{border:0 solid}ul,ol,dl{margin:0 0 1em 1em}li{line-height:1.5em;margin-left:0.8em}dt{font-weight:bold}dd{margin:0 0 1em 0.8em}blockquote{margin:0 0 1em 0.8em}blockquote:before,blockquote:after,q:before,q:after{content:""}.clearfix:after{clear:both;content:".";display:block;font-size:0;height:0;visibility:hidden}.clearfix{display:block}.floatbox{overflow:hidden}#ie_clearing{display:none}.skip,.hideme,.print{position:absolute;top:-32768px;left:-32768px}.skip:focus,.skip:active{position:static;top:0;left:0}#skiplinks{position:absolute;top:0px;left:-32768px;z-index:1000;width:100%;margin:0;padding:0;list-style-type:none}#skiplinks a.skip:focus,#skiplinks a.skip:active{left:32768px;outline:0 none;position:absolute;width:100%}}
+@media screen,projection{#header{position:relative}#topnav{text-align:right}#header #topnav{position:absolute;top:10px;right:10px}#header,#nav,#main,#footer{clear:both}#col1{float:left;width:200px}#col2{float:right;width:200px}#col3{width:auto;margin:0 200px}#col1_content,#col2_content,#col3_content{position:relative}.subcolumns{width:100%;overflow:hidden}.subcolumns_oldgecko{width:100%;float:left}.c20l,.c25l,.c33l,.c40l,.c38l,.c50l,.c60l,.c62l,.c66l,.c75l,.c80l{float:left}.c20r,.c25r,.c33r,.c40r,.c38r,.c50r,.c60r,.c66r,.c62r,.c75r,.c80r{float:right;margin-left:-5px}.c20l,.c20r{width:20%}.c40l,.c40r{width:40%}.c60l,.c60r{width:60%}.c80l,.c80r{width:80%}.c25l,.c25r{width:25%}.c33l,.c33r{width:33.333%}.c50l,.c50r{width:50%}.c66l,.c66r{width:66.666%}.c75l,.c75r{width:75%}.c38l,.c38r{width:38.2%}.c62l,.c62r{width:61.8%}.subc{padding:0 0.5em}.subcl{padding:0 1em 0 0}.subcr{padding:0 0 0 1em}.equalize,.equalize .subcolumns{overflow:visible;display:table;table-layout:fixed}.equalize >div{display:table-cell;float:none;margin:0;overflow:hidden;vertical-align:top}}
+@media print{.subcolumns >div,.floatbox{display:table;overflow:visible}.print{position:static;left:0}.noprint{display:none !important}}
\ No newline at end of file diff --git a/build_tools/l7/larch0/docs/html/css/yaml/core/slim_iehacks.css b/build_tools/l7/larch0/docs/html/css/yaml/core/slim_iehacks.css new file mode 100644 index 0000000..9b480f3 --- /dev/null +++ b/build_tools/l7/larch0/docs/html/css/yaml/core/slim_iehacks.css @@ -0,0 +1,6 @@ +@charset "UTF-8";
+/* "Yet Another Multicolumn Layout" v3.2 (c) by Dirk Jesse (http://www.yaml.de)
+* $Revision: 430 $ $Date: 2009-10-27 21:15:57 +0100 (Di, 27. Okt 2009) $ */
+@media all{body{o\verflow:visible}* html textarea{overflow:scroll;overflow-x:hidden}* html input{overflow:hidden}body,#main{position:relative}* html body{position:static}.clearfix{display:inline-block}.clearfix{display:block}* html .clearfix{height:1%}.floatbox{width:100%}.slidebox{position:relative;margin-right:-1000px;height:1%}* html #col1,* html #col2,* html #col3{position:relative}body{height:1%}.page_margins,.page,#header,#nav,#main,#footer{zoom:1}* html .page_margins,* html .page{height:1%;hei\ght:auto}* html #header,* html #nav,* html #main,* html #footer{width:100%;wid\th:auto}.subc,.subcl,.subcr{height:1%}* html ul,* html ol,* html dl{position:relative}body ol li{display:list-item}fieldset,legend{position:relative}html #ie_clearing{position:static;display:block;\clear:both;width:100%;font-size:0px;margin:-2px 0 -1em 1px}* html #ie_clearing{margin:-2px 0 -1em 0}#col3_content{margin-bottom:-2px}html{margin-right:1px}* html{margin-right:0}#col3{position:relative}* html body a,* html body a:hover{background-color:transparent}}
+@media screen,projection{#col1,#col2{display:inline}.c20l,.c25l,.c33l,.c38l,.c40l,.c50l,.c60l,.c62l,.c66l,.c75l,.c80l,.c20r,.c25r,.c33r,.c38r,.c40r,.c50r,.c60r,.c66r,.c62r,.c75r,.c80r{display:inline}* html .equalize,* html .equalize .subcolumns{overflow:visible;display:block}.equalize,.equalize .subcolumns{overflow:hidden;display:block}.equalize .c20l,.equalize .c40l,.equalize .c60l,.equalize .c80l,.equalize .c25l,.equalize .c33l,.equalize .c38l,.equalize .c50l,.equalize .c62l,.equalize .c66l,.equalize .c75l{float:left;display:inline;padding-bottom:32767px;margin-bottom:-32767px}.equalize .c20r,.equalize .c40r,.equalize .c60r,.equalize .c80r,.equalize .c25r,.equalize .c33r,.equalize .c38r,.equalize .c50r,.equalize .c62r,.equalize .c66r,.equalize .c75r{float:right;margin-left:-5px;display:inline;padding-bottom:32767px;margin-bottom:-32767px}.no-ie-padding .c20l,.no-ie-padding .c40l,.no-ie-padding .c60l,.no-ie-padding .c80l,.no-ie-padding .c20r,.no-ie-padding .c40r,.no-ie-padding .c60r,.no-ie-padding .c80r,.no-ie-padding .c25l,.no-ie-padding .c33l,.no-ie-padding .c38l,.no-ie-padding .c50l,.no-ie-padding .c62l,.no-ie-padding .c66l,.no-ie-padding .c75l,.no-ie-padding .c25r,.no-ie-padding .c33r,.no-ie-padding .c38r,.no-ie-padding .c50r,.no-ie-padding .c62r,.no-ie-padding .c66r,.no-ie-padding .c75r{padding-bottom:0;margin-bottom:0}* html #col1_content,* html #col2_content,* html #col3_content{word-wrap:break-word}* html .subc,* html .subcl,* html .subcr{word-wrap:break-word;o\verflow:hidden}}
+@media print{#col3{height:1%}}
\ No newline at end of file diff --git a/build_tools/l7/larch0/docs/html/css/yaml/print/print_100_draft.css b/build_tools/l7/larch0/docs/html/css/yaml/print/print_100_draft.css new file mode 100644 index 0000000..09b6867 --- /dev/null +++ b/build_tools/l7/larch0/docs/html/css/yaml/print/print_100_draft.css @@ -0,0 +1,75 @@ +@charset "UTF-8";
+/**
+ * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
+ *
+ * (en) print stylesheet
+ * (de) Druck-Stylesheet
+ *
+ * @copyright Copyright 2005-2009, Dirk Jesse
+ * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
+ * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
+ * @link http://www.yaml.de
+ * @package yaml
+ * @version 3.2
+ * @revision $Revision:392 $
+ * @lastmodified $Date:2009-07-05 12:18:40 +0200 (So, 05. Jul 2009) $
+ */
+
+@media print
+{
+ /**
+ * @section basic layout preparation
+ * @see http://www.yaml.de/en/documentation/css-components/layout-for-print-media.html
+ */
+
+ /* (en) change font size unit to [pt] - avoiding problems with [px] unit in Gecko based browsers */
+ /* (de) Wechsel der der Schriftgrößen-Maßheinheit zu [pt] - Probleme mit Maßeinheit [px] in Gecko-basierten Browsern vermeiden */
+ body { font-size:10pt; }
+
+ /* (en) Hide unneeded container of the screenlayout in print layout */
+ /* (de) Für den Druck nicht benötigte Container des Layouts abschalten */
+ #topnav, #nav, #search { display:none; }
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /* (en) Avoid page breaks right after headings */
+ /* (de) Vermeidung von Seitenumbrüchen direkt nach einer Überschrift */
+ h1,h2,h3,h4,h5,h6 { page-break-after:avoid; }
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /**
+ * @section column selection
+ * (en) individually switch on/off any content column for printing
+ * (de) (De)aktivierung der Contentspalten für den Ausdruck
+ *
+ * @see http://www.yaml.de/en/documentation/css-components/layout-for-print-media.html
+ */
+
+ #col1, #col1_content { float:none; width:100%; margin:0; padding:0; border:0; }
+ #col2 { display:none; }
+ #col3 { display:none; }
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /* (en) optional output of acronyms and abbreviations*/
+ /* (de) optionale Ausgabe von Auszeichnung von Abkürzungen */
+
+ /*
+ abbr[title]:after,
+ acronym[title]:after { content:'(' attr(title) ')'; }
+ */
+
+ /*------------------------------------------------------------------------------------------------------*/
+
+ /* (en) optional URL output of hyperlinks in print layout */
+ /* (de) optionale Ausgabe der URLs von Hyperlinks */
+ /*
+ a[href]:after {
+ content:" <URL:"attr(href)">";
+ color:#444;
+ background:inherit;
+ font-style:italic;
+ }
+ */
+}
diff --git a/build_tools/l7/larch0/docs/html/css/yaml/screen/content_default.css b/build_tools/l7/larch0/docs/html/css/yaml/screen/content_default.css new file mode 100644 index 0000000..f52c0e3 --- /dev/null +++ b/build_tools/l7/larch0/docs/html/css/yaml/screen/content_default.css @@ -0,0 +1,221 @@ +@charset "UTF-8";
+/**
+ * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
+ *
+ * (en) Uniform design of standard content elements
+ * (de) Einheitliche Standardformatierungen für die wichtigten Inhalts-Elemente
+ *
+ * @copyright Copyright 2005-2009, Dirk Jesse
+ * @license CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
+ * YAML-C (http://www.yaml.de/en/license/license-conditions.html)
+ * @link http://www.yaml.de
+ * @package yaml
+ * @version 3.2
+ * @revision $Revision:392 $
+ * @lastmodified $Date:2009-07-05 12:18:40 +0200 (So, 05. Jul 2009) $
+ * @appdef yaml
+ */
+
+@media all
+{
+ /**
+ * Fonts
+ *
+ * (en) global settings of font-families and font-sizes
+ * (de) Globale Einstellungen für Zeichensatz und Schriftgrößen
+ *
+ * @section content-global-settings
+ */
+
+ /* (en) reset font size for all elements to standard (16 Pixel) */
+ /* (de) Alle Schriftgrößen auf Standardgröße (16 Pixel) zurücksetzen */
+ html * { font-size:100.01%; }
+
+ /**
+ * (en) reset monospaced elements to font size 16px in all browsers
+ * (de) Schriftgröße von monospaced Elemente in allen Browsern auf 16 Pixel setzen
+ *
+ * @see: http://webkit.org/blog/67/strange-medium/
+ */
+
+ textarea, pre, code, kbd, samp, var, tt {
+ font-family:Consolas, "Lucida Console", "Andale Mono", "Bitstream Vera Sans Mono", "Courier New", Courier;
+ }
+
+ /* (en) base layout gets standard font size 12px */
+ /* (de) Basis-Layout erhält Standardschriftgröße von 12 Pixeln */
+ body {
+ font-family:Arial, Helvetica, sans-serif;
+ font-size:75.00%;
+ color:#444;
+ }
+
+ /*--- Headings | Überschriften ------------------------------------------------------------------------*/
+
+ h1,h2,h3,h4,h5,h6 {
+ font-family:"Times New Roman", Times, serif;
+ font-weight:normal;
+ color:#222;
+ margin:0 0 0.25em 0;
+ }
+
+ h1 { font-size:250%; } /* 30px */
+ h2 { font-size:200%; } /* 24px */
+ h3 { font-size:150%; } /* 18px */
+ h4 { font-size:133.33%; } /* 16px */
+ h5 { font-size:116.67%; } /* 14px */
+ h6 { font-size:116.67%; } /* 14px */
+
+ /* --- Lists | Listen -------------------------------------------------------------------------------- */
+
+ ul, ol, dl { line-height:1.5em; margin:0 0 1em 1em; }
+ ul { list-style-type:disc; }
+ ul ul { list-style-type:circle; margin-bottom:0; }
+
+ ol { list-style-type:decimal; }
+ ol ol { list-style-type:lower-latin; margin-bottom:0; }
+
+ li { margin-left:0.8em; line-height:1.5em; }
+
+ dt { font-weight:bold; }
+ dd { margin:0 0 1em 0.8em; }
+
+ /* --- general text formatting | Allgemeine Textauszeichnung ------------------------------------------ */
+
+ p { line-height:1.5em; margin:0 0 1em 0; }
+
+ blockquote, cite, q {
+ font-family:Georgia, "Times New Roman", Times, serif;
+ font-style:italic;
+ }
+ blockquote { margin:0 0 1em 1.6em; color:#666; }
+
+ strong,b { font-weight:bold; }
+ em,i { font-style:italic; }
+
+ big { font-size:116.667%; }
+ small { font-size:91.667%; }
+
+ pre { line-height:1.5em; margin:0 0 1em 0; }
+ pre, code, kbd, tt, samp, var { font-size:100%; }
+ pre, code { color:#800; }
+ kbd, samp, var, tt { color:#666; font-weight:bold; }
+ var, dfn { font-style:italic; }
+
+ acronym, abbr {
+ border-bottom:1px #aaa dotted;
+ font-variant:small-caps;
+ letter-spacing:.07em;
+ cursor:help;
+ }
+
+ sub, sup { font-size:91.6667%; line-height:0; }
+
+ hr {
+ color:#fff;
+ background:transparent;
+ margin:0 0 0.5em 0;
+ padding:0 0 0.5em 0;
+ border:0;
+ border-bottom:1px #eee solid;
+ }
+
+ /*--- Links ----------------------------------------------------------------------------------------- */
+
+ a { color:#4D87C7; background:transparent; text-decoration:none; }
+ a:visited { color:#036; }
+
+ a:focus,
+ a:hover,
+ a:active { color:#182E7A; text-decoration:underline; }
+
+ /* --- images (with optional captions) | Bilder (mit optionaler Bildunterschrift) ------------------ */
+
+ p.icaption_left { float:left; display:inline; margin:0 1em 0.15em 0; }
+ p.icaption_right { float:right; display:inline; margin:0 0 0.15em 1em; }
+
+ p.icaption_left img,
+ p.icaption_right img { padding:0; border:1px #888 solid; }
+
+ p.icaption_left strong,
+ p.icaption_right strong { display:block; overflow:hidden; margin-top:2px; padding:0.3em 0.5em; background:#eee; font-weight:normal; font-size:91.667%; }
+
+ /**
+ * ------------------------------------------------------------------------------------------------- #
+ *
+ * Generic Content Classes
+ *
+ * (en) standard classes for positioning and highlighting
+ * (de) Standardklassen zur Positionierung und Hervorhebung
+ *
+ * @section content-generic-classes
+ */
+
+ .highlight { color:#c30; }
+ .dimmed { color:#888; }
+
+ .info { background:#f8f8f8; color:#666; padding:10px; margin-bottom:0.5em; font-size:91.7%; }
+
+ .note { background:#efe; color:#040; border:2px #484 solid; padding:10px; margin-bottom:1em; }
+ .important { background:#ffe; color:#440; border:2px #884 solid; padding:10px; margin-bottom:1em; }
+ .warning { background:#fee; color:#400; border:2px #844 solid; padding:10px; margin-bottom:1em; }
+
+ .float_left { float:left; display:inline; margin-right:1em; margin-bottom:0.15em; }
+ .float_right { float:right; display:inline; margin-left:1em; margin-bottom:0.15em; }
+ .center { display:block; text-align:center; margin:0.5em auto; }
+
+ /**
+ * ------------------------------------------------------------------------------------------------- #
+ *
+ * Tables | Tabellen
+ *
+ * (en) Generic classes for table-width and design definition
+ * (de) Generische Klassen für die Tabellenbreite und Gestaltungsvorschriften für Tabellen
+ *
+ * @section content-tables
+ */
+
+ table { width:auto; border-collapse:collapse; margin-bottom:0.5em; border-top:2px #888 solid; border-bottom:2px #888 solid; }
+ table caption { font-variant:small-caps; }
+ table.full { width:100%; }
+ table.fixed { table-layout:fixed; }
+
+ th,td { padding:0.5em; }
+ thead th { color:#000; border-bottom:2px #800 solid; }
+ tbody th { background:#e0e0e0; color:#333; }
+ tbody th[scope="row"], tbody th.sub { background:#f0f0f0; }
+
+ tbody th { border-bottom:1px solid #fff; text-align:left; }
+ tbody td { border-bottom:1px solid #eee; }
+
+ tbody tr:hover th[scope="row"],
+ tbody tr:hover tbody th.sub { background:#f0e8e8; }
+ tbody tr:hover td { background:#fff8f8; }
+
+ /**
+ * ------------------------------------------------------------------------------------------------- #
+ *
+ * Miscellaneous | Sonstiges
+ *
+ * @section content-misc
+ */
+
+ /**
+ * (en) Emphasizing external Hyperlinks via CSS
+ * (de) Hervorhebung externer Hyperlinks mit CSS
+ *
+ * @section content-external-links
+ * @app-yaml-default disabled
+ */
+
+ /*
+ #main a[href^="http://www.my-domain.com"],
+ #main a[href^="https://www.my-domain.com"]
+ {
+ padding-left:12px;
+ background-image:url('your_image.gif');
+ background-repeat:no-repeat;
+ background-position:0 0.45em;
+ }
+ */
+}
diff --git a/build_tools/l7/larch0/docs/html/gui_installation.html b/build_tools/l7/larch0/docs/html/gui_installation.html new file mode 100644 index 0000000..b689435 --- /dev/null +++ b/build_tools/l7/larch0/docs/html/gui_installation.html @@ -0,0 +1,162 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + +<html> +<head> +<meta http-equiv="Content-type" content="text/html; charset=utf-8" /> +<title>GUI Tab: Installation</title> +<!-- (en) Add your meta data here --> + +<link href="css/larchdocs.css" rel="stylesheet" type="text/css"/> +<!--[if lte IE 7]> +<link href="css/yaml/core/iehacks.css" rel="stylesheet" type="text/css" /> +<![endif]--> +</head> + +<body> +<!-- skip link navigation --> +<ul id="skiplinks"> + <li><a class="skip" href="#col1">Skip to main content (Press Enter).</a></li> +</ul> + +<div class="page_margins"> + <div class="page"> + <div id="top"><div id="tm"></div></div> + <!-- begin: #col1 --> + <div id="col1" role="main"> + <div id="col1_content"> + <div id="header" role="banner"> + <h1><span><em>live Arch Linux</em> builder</span></h1> + </div> + + <!-- begin: #col3 navigation column --> + <div id="col3" role="complementary"> + <div id="col3_content"> + <img class="indent2" alt="larch logo" src="css/screen/larch150x.png" width="150" height="150" /> + <div class="vlist"> + <ul> + <li><a href="index.html"><h6>Table Of Contents</h6></a></li> + <li><a href="gui_larchify.html"><h6>Next:</h6> + <div class="indent1">GUI Tab: Larchify</div></a></li> + <li><a href="gui_project_settings.html"><h6>Previous:</h6> + <div class="indent1">GUI Tab: Project Settings</div></a></li> + </ul> + </div> + </div> + </div> + <!-- end: #col3 --> + +<div class="larchdocs"> + +<h2 id="pagetitle" level="2">GUI Tab: Installation</h2> + +<p>This tab mixes profile options and project options. Which packages +to install is a feature of the profile, as is the basic design of the +'pacman.conf' file. The exact location of the packages (repository +and cache paths) are more related to the build environment. +</p> + +<h3>Package selection</h3> + +<p>See <a href="archin.html#package_selection">here</a> for details of how +the list of packages to be installed is built up. The gui offers +convenient editing of the 'addedpacks' and 'vetopacks' files. +</p> + +<p><em>pacman</em> configuration is handled in separate parts. +'pacman.conf' is effectively split into two, the options part and the +repositories part can be edited separately, though the default options +should be alright for most purposes. This split might ease management +of updates to the structure of the file 'pacman.conf' with new pacman +releases. Default versions of both parts (for the options part a complete +pacman.conf can be used, the repositories will be stripped automatically) +are supplied in the 'data' directory of the 'larch' package. +A simplified format is used for the repository file, details can be +found <a href="archin.html#pacman_conf">here</a>. +</p> + +<p>Note that the <em>larch</em> repository must be available for building +the <em>live</em> system, i.e. it must be included in the 'pacman.conf' +used for the installation process. It is not strictly necessary for the +resulting <em>live</em> system to include this repository. See below for +further details. +</p> + +<h3>'mirrorlist'</h3> + +<p>It is possible to customize the 'mirrorlist' file used for installation. +This can be very convenient, because when building a <em>live</em> system +the build environment can be very different from the run-time environment. +For example, you might use local package repositories for building which +cannot possibly be available when the <em>live</em> system is used. +</p> + +<p>Customized versions of the 'mirrorlist' file are not regarded as +belonging to the profile, because they are build environment specific, so +they are stored in the project directory, which is made current when the +larch backend scripts are run. +</p> + +<h3>Special installation repositories and cache</h3> + +<p>Adjustments to the installation repository file and cache location are +treated as 'advanced' options, because in many cases the defaults will be +perfectly adequate. +</p> + +<h4>Using different mirrors/repositories for the installation</h4> + +<p>The second part of the 'pacman.conf' file, the repository list, can be +specified separately for the installation, via the frame +'Use project repository list'. For certain build environments this can be +very useful. +</p> + +<p>A further way of getting a distinct 'pacman.conf' in the resulting +<em>live</em> system is to put it in the profile's 'rootoverlay' directory +(in the '/etc' subdirectory, as usual). +</p> + +<h4>Package cache</h4> + +<p>Normally the host's standard package cache will be used for the +installation, but it is possible to use a non-standard location. I guess, +however, that this will not normally be necessary. +</p> + +<h3>GUI Tab: Installation Tweaks</h3> + +<p>At present the only thing offered here is a bit of assistance in +managing packages within the installation. The database can be +resynchronized, packages can be added or removed. During testing it can +be helpful to be able to make quick changes like this, but it is probably +not a good idea to use these facilities too freely. The installation will +differ from the specification in the profile (unless you immediately edit +the profile too), which may be no problem for one-offs, but if you ever +want to reuse the profile you may well lose track of what changes you have +made. +</p> + +</div> + + + + <div class="topref"><a href="#top">Top</a></div> + </div> + <!-- begin: #footer --> + <div id="footer"> + <div id="footer-content" role="contentinfo">© 2010 Michael Towers<br /> + Page layout assisted by <a href="http://www.yaml.de/">YAML</a> and + <a href="http://www.kuwata-lab.com/tenjin/">pyTenjin</a> + </div> + </div> + <!-- end: #footer --> + </div> + <!-- end: #col1 --> + <div id="bottom"><div id="bl"><div id="bm"></div></div></div> + </div> +</div> +<!-- full skiplink functionality in webkit browsers --> +<script src="css/yaml/core/js/webkit-focusfix.js" type="text/javascript"></script> +</body> +</html> diff --git a/build_tools/l7/larch0/docs/html/gui_larchify.html b/build_tools/l7/larch0/docs/html/gui_larchify.html new file mode 100644 index 0000000..9e2e318 --- /dev/null +++ b/build_tools/l7/larch0/docs/html/gui_larchify.html @@ -0,0 +1,187 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + +<html> +<head> +<meta http-equiv="Content-type" content="text/html; charset=utf-8" /> +<title>GUI Tab: Larchify</title> +<!-- (en) Add your meta data here --> + +<link href="css/larchdocs.css" rel="stylesheet" type="text/css"/> +<!--[if lte IE 7]> +<link href="css/yaml/core/iehacks.css" rel="stylesheet" type="text/css" /> +<![endif]--> +</head> + +<body> +<!-- skip link navigation --> +<ul id="skiplinks"> + <li><a class="skip" href="#col1">Skip to main content (Press Enter).</a></li> +</ul> + +<div class="page_margins"> + <div class="page"> + <div id="top"><div id="tm"></div></div> + <!-- begin: #col1 --> + <div id="col1" role="main"> + <div id="col1_content"> + <div id="header" role="banner"> + <h1><span><em>live Arch Linux</em> builder</span></h1> + </div> + + <!-- begin: #col3 navigation column --> + <div id="col3" role="complementary"> + <div id="col3_content"> + <img class="indent2" alt="larch logo" src="css/screen/larch150x.png" width="150" height="150" /> + <div class="vlist"> + <ul> + <li><a href="index.html"><h6>Table Of Contents</h6></a></li> + <li><a href="gui_medium.html"><h6>Next:</h6> + <div class="indent1">GUI Tab: Preparing the Medium</div></a></li> + <li><a href="gui_installation.html"><h6>Previous:</h6> + <div class="indent1">GUI Tab: Installation</div></a></li> + </ul> + </div> + </div> + </div> + <!-- end: #col3 --> + +<div class="larchdocs"> + +<h2 id="pagetitle" level="2">GUI Tab: Larchify</h2> + +<p>You can repeat the 'larchify' command as often as you like, +to test various configurations or to build differently configured +<em>live</em> systems with the same underlying packages. This works +because the 'larchify' process itself does not change anything within the +installation - all the files it generates are placed in the 'overlay', +which (thanks to <em>aufs</em>) will just cover up any old versions of +the added files in the underlying installation. At present <em>larch</em> +does not support the 'deletion' of installation files, they can only be +overlayed by replacements. +</p> + +<h3>User accounts</h3> +<p>You can enter or edit user accounts to be added during the creation of +the <em>live</em> system. Any of the columns except the first (the login +name) may be empty. +</p> +<p>A password can be set for the new user by entering this (plain text - +I'm guessing this is alright in this situation ...). An empty password +field will allow passwordless logins (at least on the console). +</p> +<p>The primary group of a new user can be set in the 'Group' column. +When this is empty, it takes the <em>useradd</em> default, which is +defined by settings in '/etc/login.defs' and '/etc/default/useradd'. Note +that the default in <em>Arch Linux</em> is a group with the same name as +the user, this is set by 'USERGROUPS_ENAB yes' in 'etc/login.defs'. You can +override this by adding an 'expert' option, or by placing a modified version +of this file in the profile's 'rootoverlay' directory. +</p> +<p>By default the UID number will be chosen automatically, but a specific +number may be entered here. In <em>Arch Linux</em> the UIDs normally start +at 1000. +</p> +<p>The 'skel'-directory column determines how the user's home +directory will be initialized. The default (empty cell) is to copy the +contents from '/etc/skel'. The editor popup shows a list of the available +alternatives (folders within the profile beginning with 'skel_'). +</p> +<p>The additional groups to which this user should belong can also be +specified. Entries in this column are initialized to some default value +which should be adequate for normal use, but may well need tweaking. +This is a comma separated list <strong>without spaces</strong>. +</p> +<p>The final column allows you to pass further options to the system +'useradd' command used to add the new user. Do not use double-quotes in this +option string. Read 'man useradd' for more information about the available +options. +</p> + +<h4>Editing the table</h4> +<p>Click on a cell in the selected row to cause an editor popup to appear. +Clicking on an unselected row selects that row. +</p> + +<h3>The overlay</h3> +<p>Apart from the few customization options offered by the GUI directly, it +is possible to include any files in the <em>live</em> system by adding them +at the appropriate path within the overlay directory ('rootoverlay') of +the profile. This button opens a file browser on the 'rootoverlay' directory +of the current profile. +</p> + +<h3>Locales</h3> +<p>You can select the (glibc) locales supported by the <em>live</em> +system by editing the /etc/locale.gen file in the overlay. If there is +no such file initially it will be copied from the new installation's +(not the host's!) version. See (for example) the <em>Arch Wiki</em> for +more information about locales. Note that <em>larch</em> tries to leave +the locale files in the installation itself unchanged, new files are +placed in the overlay. +</p> + +<h3><em>Arch</em> configuration: /etc/rc.conf</h3> +<p>This is the central configuration file for an <em>Arch Linux</em> +system. You can edit it here (see for example the <em>Arch Wiki</em> for +more information about this file). +</p> + +<h3>Reuse existing system.sqf</h3> + +<p>After 'larchify' has been run, the base installation will have been +'squashed' into a compressed archive. Setting this option will prevent +the repetition of this compression (which is quite a lengthy process) on +the next run of 'larchify'. This should only be enabled if no changes +have been made to the base installation (otherwise these changes will +not be picked up). +</p> + +<h3>Advanced options - the defaults are normally fine</h3> + +<h4>mkinitcpio.conf</h4> +<p>Here you can edit the mkinitcpio.conf used for building the +<em>initramfs</em> for the <em>live</em> system. N.B. The details of +<em>mkinitcpio</em> handling in <em>larch</em> are a bit complicated, +so if you change something here please be careful - you are not editing +'/etc/mkinitcpio.conf', but rather 'etc/mkinitcpio.conf.larch0' in the +'rootoverlay' directory of the profile (see +<a href="larchify.html#mkinitcpio">here</a> for further details). +Also, don't change the <em>larch</em> hooks. +</p> + +<h4>ssh-keys</h4> +<p>See <a href="larch_ssh.html#ssh_hostkeys">ssh host keys</a>. The default +is to generate these keys (if the <em>openssh</em> package is installed). +</p> + +<h4>Reuse existing locales</h4> + +<p>For people generating a lot of locales this can save a bit of time on +a rerun, so long as nothing significant (like <em>glibc</em>, or +/etc/locale.gen) has changed in the installation. +</p> + +</div> + + + + <div class="topref"><a href="#top">Top</a></div> + </div> + <!-- begin: #footer --> + <div id="footer"> + <div id="footer-content" role="contentinfo">© 2010 Michael Towers<br /> + Page layout assisted by <a href="http://www.yaml.de/">YAML</a> and + <a href="http://www.kuwata-lab.com/tenjin/">pyTenjin</a> + </div> + </div> + <!-- end: #footer --> + </div> + <!-- end: #col1 --> + <div id="bottom"><div id="bl"><div id="bm"></div></div></div> + </div> +</div> +<!-- full skiplink functionality in webkit browsers --> +<script src="css/yaml/core/js/webkit-focusfix.js" type="text/javascript"></script> +</body> +</html> diff --git a/build_tools/l7/larch0/docs/html/gui_medium.html b/build_tools/l7/larch0/docs/html/gui_medium.html new file mode 100644 index 0000000..2c1b010 --- /dev/null +++ b/build_tools/l7/larch0/docs/html/gui_medium.html @@ -0,0 +1,220 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + +<html> +<head> +<meta http-equiv="Content-type" content="text/html; charset=utf-8" /> +<title>GUI Tab: Preparing the Medium</title> +<!-- (en) Add your meta data here --> + +<link href="css/larchdocs.css" rel="stylesheet" type="text/css"/> +<!--[if lte IE 7]> +<link href="css/yaml/core/iehacks.css" rel="stylesheet" type="text/css" /> +<![endif]--> +</head> + +<body> +<!-- skip link navigation --> +<ul id="skiplinks"> + <li><a class="skip" href="#col1">Skip to main content (Press Enter).</a></li> +</ul> + +<div class="page_margins"> + <div class="page"> + <div id="top"><div id="tm"></div></div> + <!-- begin: #col1 --> + <div id="col1" role="main"> + <div id="col1_content"> + <div id="header" role="banner"> + <h1><span><em>live Arch Linux</em> builder</span></h1> + </div> + + <!-- begin: #col3 navigation column --> + <div id="col3" role="complementary"> + <div id="col3_content"> + <img class="indent2" alt="larch logo" src="css/screen/larch150x.png" width="150" height="150" /> + <div class="vlist"> + <ul> + <li><a href="index.html"><h6>Table Of Contents</h6></a></li> + <li><a href="gui_mediumprofile.html"><h6>Next:</h6> + <div class="indent1">GUI Tab: Medium Profile Settings</div></a></li> + <li><a href="gui_larchify.html"><h6>Previous:</h6> + <div class="indent1">GUI Tab: Larchify</div></a></li> + </ul> + </div> + </div> + </div> + <!-- end: #col3 --> + +<div class="larchdocs"> + +<h2 id="pagetitle" level="2">GUI Tab: Preparing the Medium</h2> + +<p>This tab presents the various possibilities for installing the +<em>live</em> system that was built on the 'larchify' tab onto a bootable +device, which can be in <em>iso9660</em> form (to burn to a CD/DVD), or +a partition on a hard disk or flash storage device. A suitable bootloader +can also be installed. +</p> + +<h3>Bootloader</h3> +<p>The choice between <em>GRUB</em> ('legacy') and +<em>syslinux/isolinux</em> is provided. Editing their configuration +files is covered on the <a href="gui_mediumprofile.html">'Medium Profile'</a> +tab. Whenever a 'larch source' is selected, the validity of this source is +tested, along with bootloader availability, so it could turn out +(according to the nature of the source), that one - or even both - of the +bootloaders is not available. To support a particular bootloader the +corresponding package must be installed in the <em>larchified</em> system. +</p> + +<h3>Selecting the source</h3> + +<p>In the 'normal' case this will be the first (default) option, the +<em>larchified</em> system. The other choices enable copying of an +already existing <em>larch live</em> medium (or building a boot CD +for a USB medium). If no <em>larchified</em> system has been built yet, +a warning will pop up and the build buttons will be disabled. +</p> + +<h4>Copying an existing <em>larch live</em> medium</h4> +<p>The other source options allow the system to be taken from one that +has already been built. This could be useful for copying from CD to +USB stick, or vice versa, or for copies which involve changes to an +option or two. The 'Device' source requires an unmounted partition +(if you're using some sort of automounting, you'll have to sort that +out yourself). The 'iso file' source allows you to select an 'iso' +image (ending '.iso') anywhere in the file-system. The 'Path' source +allows you to select a directory within the filesystem. If you want +to use a CD/DVD as source, mount it and use this option to +navigate to the mount point. +</p> + +<p>Note that whenever a new source is selected a check is run on it, +to check whether it could be valid and to determine one or two +attributes (e.g. available bootloaders). +</p> + +<h3>Build an <em>iso</em>, for CD or DVD</h3> +<p>Only limited customization possibilities are offered here, you can +set the volume label ('-V' option to <em>mkisofs</em>) and select from +the available bootloaders. The only option for medium detection is +'Search (for larchboot)', described below. +</p> + +<h3>Install to partitition</h3> + +<p>Here one must select the partition to install to - which must be +plugged in and not mounted (again, good luck to automounters), and +also select how the <em>live initramfs</em> is to find the correct +partition. The available options are: + +<ul> + <li>Partition: The device will be sought on the basis of its (current) + device name - such as /dev/sdb1. This is only suitable if you can be + sure the device will always get the same name (which - especially with + pluggable devices - is unlikely).</li> + <li>UUID: Each device normally has a unique UUID, so this is a pretty + reliable method. It's just that the UUIDs themselves are rather ungainly + and unmemorable.</li> + <li>LABEL: Booting on the basis of the device label can be quite reliable + and quite readable, so it might be a good compromise.</li> + <li>Search (for larchboot): The <em>live initramfs</em> tests all + visible devices until it finds one containing the file larch/larchboot. + </li> +</ul> +</p> + +<p>The choice of bootloader will determine the file-system with which the +partition is formatted - for <em>syslinux</em> 'vfat' is used, for +<em>GRUB</em> 'ext2'. No other file-system types are supported at present. +There is also an option to install the <em>live</em> system without first +formatting the partition. This might be useful in certain very special +cases but it is generally <strong>not</strong> recommended. Another +option for experts only is to suppress the installation of the +bootloader. The bootloader is always installed to the Master Boot Record +of the <em>live</em> medium, which might not always be desirable, so +an installation without this step is also supported. +</p> + +<p>With the button 'Enable session-saving', you can determine whether the +medium gets a file 'larch/save', which is needed to enable the session +saving feature (this option overrides the profile's <em>nosave</em> +suggestion). +</p> + +<p>The option 'Not bootable via search' suppresses the generation of the +'larch/larchboot' file, so that the method of medium detection which +searches for this file will not work on the generated medium (this of +course makes no sense if the 'Search (for larchboot)' medium detection +method is selected for this medium). +</p> + +<h3>Volume label</h3> +<p>The maximum length of the label should be 16 characters, which is ok +for 'iso' (CD/DVD) and for 'ext2' (GRUB on partition), but 'vfat' (syslinux +on partition) only accepts 11. +</p> + +<h3>Write the larch medium</h3> +When enough information is available, this button will be enabled and +the generation can be started. If an 'iso' file is to be generated, a +pop-up file-save dialog appears so that the destination can be specified. + +<h3>Create boot iso</h3> +<p>If a 'device' (partition) is selected as 'larch source', there is the +possibility of generating a boot CD for this <em>live</em> medium. This +is to cover cases where a machine cannot boot from USB devices, but can +boot from a CD. Just the kernel, <em>initramfs</em> and bootloader are put +in the boot <em>iso</em>. The <em>live</em> system's <em>initramfs</em> +will (hopefully) then be able to find the actual <em>live</em> medium. +The detection method can be selected, and it need not be the same as +that which the <em>live</em> medium itself uses. +Note that the USB device for which the CD is to be generated must be +plugged in (not mounted) and selected in the device chooser. +</p> + +<p>A pop-up file-save dialog appears so that the destination can be +specified. Note that the boot iso does not get the volume label shown +in the gui (that is for complete <em>larch</em> media), the default +generated by the back-end script 'boot_iso.py' is used. +</p> + +<h3>Use chroot</h3> + +<p>To increase portability and reduce demands on the build system, most +of the fancy processing can be done using the system which was installed +for <em>larchification</em>, via <em>chroot</em>. For normal installation +and building of a <em>larch</em> system this is the default, but when +using one of the other sources (for copying etc.) this approach is not +used by default - for the simple reason that there may well not be +a suitable <em>chroot</em> system available. The gui offers the +possibility of overriding this, so that if you do indeed have a +suitable <em>chroot</em> system, then you can use it if you want. +It is also possible to disable <em>chrooting</em> for the normal case, +but I'm not sure how useful this option is. +</p> + +</div> + + + + <div class="topref"><a href="#top">Top</a></div> + </div> + <!-- begin: #footer --> + <div id="footer"> + <div id="footer-content" role="contentinfo">© 2010 Michael Towers<br /> + Page layout assisted by <a href="http://www.yaml.de/">YAML</a> and + <a href="http://www.kuwata-lab.com/tenjin/">pyTenjin</a> + </div> + </div> + <!-- end: #footer --> + </div> + <!-- end: #col1 --> + <div id="bottom"><div id="bl"><div id="bm"></div></div></div> + </div> +</div> +<!-- full skiplink functionality in webkit browsers --> +<script src="css/yaml/core/js/webkit-focusfix.js" type="text/javascript"></script> +</body> +</html> diff --git a/build_tools/l7/larch0/docs/html/gui_mediumprofile.html b/build_tools/l7/larch0/docs/html/gui_mediumprofile.html new file mode 100644 index 0000000..eb823c7 --- /dev/null +++ b/build_tools/l7/larch0/docs/html/gui_mediumprofile.html @@ -0,0 +1,117 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + +<html> +<head> +<meta http-equiv="Content-type" content="text/html; charset=utf-8" /> +<title>GUI Tab: Medium Profile Settings</title> +<!-- (en) Add your meta data here --> + +<link href="css/larchdocs.css" rel="stylesheet" type="text/css"/> +<!--[if lte IE 7]> +<link href="css/yaml/core/iehacks.css" rel="stylesheet" type="text/css" /> +<![endif]--> +</head> + +<body> +<!-- skip link navigation --> +<ul id="skiplinks"> + <li><a class="skip" href="#col1">Skip to main content (Press Enter).</a></li> +</ul> + +<div class="page_margins"> + <div class="page"> + <div id="top"><div id="tm"></div></div> + <!-- begin: #col1 --> + <div id="col1" role="main"> + <div id="col1_content"> + <div id="header" role="banner"> + <h1><span><em>live Arch Linux</em> builder</span></h1> + </div> + + <!-- begin: #col3 navigation column --> + <div id="col3" role="complementary"> + <div id="col3_content"> + <img class="indent2" alt="larch logo" src="css/screen/larch150x.png" width="150" height="150" /> + <div class="vlist"> + <ul> + <li><a href="index.html"><h6>Table Of Contents</h6></a></li> + <li><a href="gui_medium.html"><h6>Previous:</h6> + <div class="indent1">GUI Tab: Preparing the Medium</div></a></li> + </ul> + </div> + </div> + </div> + <!-- end: #col3 --> + +<div class="larchdocs"> + +<h2 id="pagetitle" level="2">GUI Tab: Medium Profile Settings</h2> + +<p>The profile offers a few medium-specific configuration options: +</p> + +<h3><a name="bootlines"></a>Boot entries/options</h3> + +<p>The bootloader offers a selection of 'boot lines', so that +different systems, or various kernels in combination with various +boot options can be started. The file 'bootlines' in the profile +contains this information for the <em>larch live</em> system in a +form which can be converted automatically into bootloader specific +formats. This allows the boot menu entries to be supplied in the +profile in a way which is independent of the actual bootloader +which is used in the end. The format should be pretty clear from +the default version. +</p> + +<p>The 'bootlines' file covers only the menu entries for the +<em>larch live</em> system. All other entries must be supplied in +a bootloader specific 'template' file. Buttons are supplied to edit +these, too. Note the '###LARCH' line, which specifies where the +information from the 'bootlines' file is to be included. +</p> + +<h3>The 'cd-root' directory</h3> +<p>The handling of this directory is described +<a href="profiles.html#cd-root">here</a>. It is a bit complicated, +because it tries to be flexible, but the default settings might be +adequate for many purposes. +There is a button to open a file browser on this directory +(within the current profile). +</p> + +<h3>Disable session saving</h3> + +<p>Checking this option will only cause the profile file 'nosave' to +exist. Whether session saving is then available on the <em>live</em> +medium depends firstly on whether the medium is writable (an 'iso' +file is not writable) and secondly on whether this option is +overridden at the actual build stage. This may make this option +appear a bit useless, but bear in mind that it is supplied in the +profile, and can thus act as a signal as to whether the profile +was designed with session saving in mind. +</p> + +</div> + + + + <div class="topref"><a href="#top">Top</a></div> + </div> + <!-- begin: #footer --> + <div id="footer"> + <div id="footer-content" role="contentinfo">© 2010 Michael Towers<br /> + Page layout assisted by <a href="http://www.yaml.de/">YAML</a> and + <a href="http://www.kuwata-lab.com/tenjin/">pyTenjin</a> + </div> + </div> + <!-- end: #footer --> + </div> + <!-- end: #col1 --> + <div id="bottom"><div id="bl"><div id="bm"></div></div></div> + </div> +</div> +<!-- full skiplink functionality in webkit browsers --> +<script src="css/yaml/core/js/webkit-focusfix.js" type="text/javascript"></script> +</body> +</html> diff --git a/build_tools/l7/larch0/docs/html/gui_project_settings.html b/build_tools/l7/larch0/docs/html/gui_project_settings.html new file mode 100644 index 0000000..0cd4630 --- /dev/null +++ b/build_tools/l7/larch0/docs/html/gui_project_settings.html @@ -0,0 +1,168 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + +<html> +<head> +<meta http-equiv="Content-type" content="text/html; charset=utf-8" /> +<title>GUI Tab: Project Settings</title> +<!-- (en) Add your meta data here --> + +<link href="css/larchdocs.css" rel="stylesheet" type="text/css"/> +<!--[if lte IE 7]> +<link href="css/yaml/core/iehacks.css" rel="stylesheet" type="text/css" /> +<![endif]--> +</head> + +<body> +<!-- skip link navigation --> +<ul id="skiplinks"> + <li><a class="skip" href="#col1">Skip to main content (Press Enter).</a></li> +</ul> + +<div class="page_margins"> + <div class="page"> + <div id="top"><div id="tm"></div></div> + <!-- begin: #col1 --> + <div id="col1" role="main"> + <div id="col1_content"> + <div id="header" role="banner"> + <h1><span><em>live Arch Linux</em> builder</span></h1> + </div> + + <!-- begin: #col3 navigation column --> + <div id="col3" role="complementary"> + <div id="col3_content"> + <img class="indent2" alt="larch logo" src="css/screen/larch150x.png" width="150" height="150" /> + <div class="vlist"> + <ul> + <li><a href="index.html"><h6>Table Of Contents</h6></a></li> + <li><a href="gui_installation.html"><h6>Next:</h6> + <div class="indent1">GUI Tab: Installation</div></a></li> + <li><a href="larch_gui.html"><h6>Previous:</h6> + <div class="indent1">Using the GUI</div></a></li> + </ul> + </div> + </div> + </div> + <!-- end: #col3 --> + +<div class="larchdocs"> +<h2 id="pagetitle" level="2">GUI Tab: Project Settings</h2> + +<h3>Projects</h3> + +<p>The <em>larch-7</em> GUI uses 'projects' to gather together a few +configuration options concerning the build environment. +Examples are the location of the <em>Arch</em> installation to be +'larchified' (converted to a <em>live</em> system), pacman options such +as package repository locations, which 'profile' (see below) to build with, +which boot loader to use, and so on. These are all options which don't +directly affect the design of the live system to be built. Most of the +remaining configuration options do concern the design and are specified +in the 'profile', for example the details of which packages to +install, and how to configure the installed system. +</p> + +<p>All project information is kept in a directory within '~/.config/larch' +whose name is derived from the project name by prefixing it with 'p_'. +The currently selected project is specified in the file +'~/.config/larch/app.conf' (the application configuration file), the +default entry being 'project = larch-0'. +</p> + +<p>A new named project can be created in the advanced options on the +Project-Settings tab of the GUI. For many purposes this will be unnecessary +and one can use the default project, 'larch-0' (this is why it is among the +advanced options). It is also possible to delete projects which are no longer +needed, and to set the path of the installation to be larchified. Note +that the GUI uses a different default installation path than the command +line scripts, '~/larch_build' (i.e. within the user's home directory). +Changing the installation path to an empty one ('') will return to the +default one. +</p> + +<h4>Installation Path</h4> + +<p>The installation that <em>larch</em> turns into a <em>live</em> system +need not be on a separate partition, it can be placed anywhere convenient. +The default installation directory ('~/larch_build') should normally be +acceptable, so long as there is enough free space on that partition. +Note that lots of space is necessary, nearly 4GB for a 700MB CD, for example. +The <em>live</em> system is built in the '.larch' sub-directory of the +installation directory; it must be within the installation to be converted +because some of the construction work is done using <em>chroot</em>. +</p> + +<p>The installation of the <em>Arch Linux</em> system to be larchified is +handled on the <a href="gui_installation.html">'Installation'</a> tab of +the GUI, but an already existing <em>Arch Linux</em> installation can also +be larchified: see <a href="larchify.html#existingSystem"> +Making a live CD from an existing Arch installation</a> +</p> + +<p>As the actual building work is done with admintrator permissions, the +installation path can actually be anywhere in the file-system - exercise +caution in entering the path, you could do some real damage to your system +if you make a mistake. Entering an empty string will cause the default +path to be chosen, to larchify the running system (not at all recommended!) +enter '/'. +</p> + +<h3>Profiles</h3> + +<p>A profile contains the information needed to build a particular flavour +of <em>(live) Arch Linux</em> - which packages to install, which locales, +system configuration in '/etc/rc.conf', boot entries, and so on. Apart +from a few basic configuration details (mainly those concerned specifically +with the special needs of a <em>live</em> system) for which <em>larch</em> +provides a special mechanism, all desired changes from the freshly +installed state should be placed in the directory 'rootoverlay' within +the profile directory. This allows easy rebuilding of a particularly +configured system, and it also allows various (differently configured) +<em>live</em> systems to be built from the same underlying installation, +without touching the installation itself. +</p> + +<p>All profile information is kept in the correspondingly named directory +within the directory '~/.config/larch/myprofiles'. +</p> + +<p>The profiles are shared by all projects, so if you change one that is +in use by another project, it will also be changed for that project. +Deletion or renaming of a profile that is in use by another project is +not permitted, but it is possible to copy a profile within the 'myprofiles' +directory, by giving it another name, and thus creating a new, 'unattached' +version. +A new profile can be also be fetched from anywhere in the file-system, +using the browse button, but in this case it is not possible to supply a +new name for the profile directory (this can be done subsequently with +the rename button). +</p> + +<p>When renaming or browsing for profiles it is possible to overwrite +existing profiles, but you will be prompted for confirmation. +</p> + +</div> + + + + <div class="topref"><a href="#top">Top</a></div> + </div> + <!-- begin: #footer --> + <div id="footer"> + <div id="footer-content" role="contentinfo">© 2010 Michael Towers<br /> + Page layout assisted by <a href="http://www.yaml.de/">YAML</a> and + <a href="http://www.kuwata-lab.com/tenjin/">pyTenjin</a> + </div> + </div> + <!-- end: #footer --> + </div> + <!-- end: #col1 --> + <div id="bottom"><div id="bl"><div id="bm"></div></div></div> + </div> +</div> +<!-- full skiplink functionality in webkit browsers --> +<script src="css/yaml/core/js/webkit-focusfix.js" type="text/javascript"></script> +</body> +</html> diff --git a/build_tools/l7/larch0/docs/html/index.html b/build_tools/l7/larch0/docs/html/index.html new file mode 100644 index 0000000..2a6cad0 --- /dev/null +++ b/build_tools/l7/larch0/docs/html/index.html @@ -0,0 +1,151 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + +<html> +<head> +<meta http-equiv="Content-type" content="text/html; charset=utf-8" /> +<title>Table of Contents</title> +<!-- (en) Add your meta data here --> + +<link href="css/larchdocs.css" rel="stylesheet" type="text/css"/> +<!--[if lte IE 7]> +<link href="css/yaml/core/iehacks.css" rel="stylesheet" type="text/css" /> +<![endif]--> +</head> + +<body> +<!-- skip link navigation --> +<ul id="skiplinks"> + <li><a class="skip" href="#col1">Skip to main content (Press Enter).</a></li> +</ul> + +<div class="page_margins"> + <div class="page"> + <div id="top"><div id="tm"></div></div> + <!-- begin: #col1 --> + <div id="col1" role="main"> + <div id="col1_content"> + <div id="header" role="banner"> + <h1><span><em>live Arch Linux</em> builder</span></h1> + </div> + + <!-- begin: #col3 navigation column --> + <div id="col3" role="complementary"> + <div id="col3_content"> + <img class="indent2" alt="larch logo" src="css/screen/larch150x.png" width="150" height="150" /> + </div> + </div> + <!-- end: #col3 --> + + <h2>Table of Contents</h2> + <p>This documentation covers <em>larch</em> version 7.2.</p> + +<p>WARNING: larch-7.2 is still quite new and probably buggy, but it is +the recommended version, especially for command-line users - please +report bugs! +</p> +<p>Although relatively few changes have been made to the structure of the +profiles, it is not completely compatible with larch-7.1, so don't mix +the two. +</p> + + + + <ul class="toc"> + <li class="level1"><a href="larch_intro.html">Introduction</a></li> + <ul> + <li class="level2"><a href="larch_intro.html#live_system">What is a live system?</a></li> + <li class="level2"><a href="larch_intro.html#requirements">Build system requirements</a></li> + <li class="level2"><a href="larch_intro.html#cli_gui">Command line vs. GUI</a></li> + <li class="level2"><a href="larch_intro.html#overview">Overview</a></li> + <li class="level2"><a href="larch_intro.html#larch_installation">Installation of the larch build system</a></li> + <li class="level2"><a href="larch_intro.html#larch_profiles">Profiles</a></li> + <li class="level2"><a href="larch_intro.html#stages">The stages of the build process</a></li> + </ul> + <li class="level1"><a href="larch_features.html">Features</a></li> + <li class="level1"><a href="larch_quick-console.html">Quick Start - Console</a></li> + <li class="level1"><a href="larch_quick.html">Quick Start</a></li> + <li class="level1"><a href="archin.html">Installation of the base Arch system</a></li> + <ul> + <li class="level2"><a href="archin.html#pacman_conf">'pacman.conf' and 'mirrorlist'</a></li> + <li class="level2"><a href="archin.html#Custom_packages">Custom packages</a></li> + <li class="level2"><a href="archin.html#package_selection">Selection of packages to be installed</a></li> + </ul> + <li class="level1"><a href="larchify.html">Building the live system</a></li> + <ul> + <li class="level2"><a href="larchify.html#mkinitcpio">mkinitcpio and the initramfs</a></li> + <li class="level2"><a href="larchify.html#reuseSystem">Rebuilding using an existing 'system.sqf'</a></li> + <li class="level2"><a href="larchify.html#existingSystem">Making a live system from an existing Arch installation</a></li> + </ul> + <li class="level1"><a href="medium.html">Preparing the larch live medium</a></li> + <ul> + <li class="level2"><a href="medium.html#usb2bootiso">Building a boot CD for a USB-stick</a></li> + </ul> + <li class="level1"><a href="profiles.html">Profiles</a></li> + <ul> + <li class="level2"><a href="profiles.html#overlay">The overlay directory</a></li> + <li class="level2"><a href="profiles.html#cd-root">The cd-root directory</a></li> + <li class="level2"><a href="profiles.html#other-files">Other important files within a profile</a></li> + <li class="level2"><a href="profiles.html#users">Adding user accounts</a></li> + </ul> + <li class="level1"><a href="larch_live_system.html">Structure of a larch live system</a></li> + <ul> + <li class="level2"><a href="larch_live_system.html#Squashfs_and_Unionfs">squashfs and aufs</a></li> + <li class="level2"><a href="larch_live_system.html#initramfs">initramfs and mkinitcpio</a></li> + <li class="level2"><a href="larch_live_system.html#rc_files">/etc/rc.sysinit and /etc/rc.shutdown</a></li> + <li class="level2"><a href="larch_live_system.html#fstab">/etc/fstab</a></li> + <li class="level2"><a href="larch_live_system.html#aufs">[unionfs as an alternative to aufs]</a></li> + </ul> + <li class="level1"><a href="larch_sessionsave.html">Saving a session back to the boot device (or even somewhere else)</a></li> + <ul> + <li class="level2"><a href="larch_sessionsave.html#overlays">Overlay archives</a></li> + <li class="level2"><a href="larch_sessionsave.html#var_files">Special places in /var</a></li> + <li class="level2"><a href="larch_sessionsave.html#upd_packages">Updating packages</a></li> + <li class="level2"><a href="larch_sessionsave.html#de-Act">Activating and deactivating the session-saving feature</a></li> + <li class="level2"><a href="larch_sessionsave.html#custom">Customizing the behaviour using scripts</a></li> + </ul> + <li class="level1"><a href="larch_ssh.html">ssh access</a></li> + <ul> + <li class="level2"><a href="larch_ssh.html#ssh_hostkeys">ssh host keys</a></li> + <li class="level2"><a href="larch_ssh.html#ssh_x11">ssh and X11</a></li> + </ul> + <li class="level1"><a href="larch_running.html">Running a larch live system</a></li> + <ul> + <li class="level2"><a href="larch_running.html#bootparm">Boot parameters</a></li> + <li class="level2"><a href="larch_running.html#config">Configuration</a></li> + <li class="level2"><a href="larch_running.html#install">Installation to hard disk</a></li> + <li class="level2"><a href="larch_running.html#install-live">'Live' installation to hard disk</a></li> + <li class="level2"><a href="larch_running.html#change-medium">Copying the live system to other media</a></li> + </ul> + <li class="level1"><a href="larch_rebuild.html">Recompressing the whole system</a></li> + <li class="level1"><a href="larch_gui.html">Using the GUI</a></li> + <ul> + <li class="level2"><a href="gui_project_settings.html">GUI Tab: Project Settings</a></li> + <li class="level2"><a href="gui_installation.html">GUI Tab: Installation</a></li> + <li class="level2"><a href="gui_larchify.html">GUI Tab: Larchify</a></li> + <li class="level2"><a href="gui_medium.html">GUI Tab: Preparing the Medium</a></li> + <li class="level2"><a href="gui_mediumprofile.html">GUI Tab: Medium Profile Settings</a></li> + <ul> + <li class="level3"><a href="gui_mediumprofile.html#bootlines">Boot entries/options</a></li> + </ul> + </ul> + + <div class="topref"><a href="#top">Top</a></div> + </div> + <!-- begin: #footer --> + <div id="footer"> + <div id="footer-content" role="contentinfo">© 2010 Michael Towers<br /> + Page layout assisted by <a href="http://www.yaml.de/">YAML</a> and + <a href="http://www.kuwata-lab.com/tenjin/">pyTenjin</a> + </div> + </div> + <!-- end: #footer --> + </div> + <!-- end: #col1 --> + <div id="bottom"><div id="bl"><div id="bm"></div></div></div> + </div> +</div> +<!-- full skiplink functionality in webkit browsers --> +<script src="css/yaml/core/js/webkit-focusfix.js" type="text/javascript"></script> +</body> +</html> diff --git a/build_tools/l7/larch0/docs/html/larch_features.html b/build_tools/l7/larch0/docs/html/larch_features.html new file mode 100644 index 0000000..a6cf96d --- /dev/null +++ b/build_tools/l7/larch0/docs/html/larch_features.html @@ -0,0 +1,180 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + +<html> +<head> +<meta http-equiv="Content-type" content="text/html; charset=utf-8" /> +<title>Features</title> +<!-- (en) Add your meta data here --> + +<link href="css/larchdocs.css" rel="stylesheet" type="text/css"/> +<!--[if lte IE 7]> +<link href="css/yaml/core/iehacks.css" rel="stylesheet" type="text/css" /> +<![endif]--> +</head> + +<body> +<!-- skip link navigation --> +<ul id="skiplinks"> + <li><a class="skip" href="#col1">Skip to main content (Press Enter).</a></li> +</ul> + +<div class="page_margins"> + <div class="page"> + <div id="top"><div id="tm"></div></div> + <!-- begin: #col1 --> + <div id="col1" role="main"> + <div id="col1_content"> + <div id="header" role="banner"> + <h1><span><em>live Arch Linux</em> builder</span></h1> + </div> + + <!-- begin: #col3 navigation column --> + <div id="col3" role="complementary"> + <div id="col3_content"> + <img class="indent2" alt="larch logo" src="css/screen/larch150x.png" width="150" height="150" /> + <div class="vlist"> + <ul> + <li><a href="index.html"><h6>Table Of Contents</h6></a></li> + <li><a href="larch_quick-console.html"><h6>Next:</h6> + <div class="indent1">Quick Start - Console</div></a></li> + <li><a href="larch_intro.html"><h6>Previous:</h6> + <div class="indent1">Introduction</div></a></li> + </ul> + </div> + </div> + </div> + <!-- end: #col3 --> + +<div class="larchdocs"> +<h2 id="pagetitle" level="1">Features</h2> + +<ul> + + <li> + <p>Built from standard <em>Arch Linux</em> packages</p> + </li> + + <li> + <p>Only minimal changes made to enable functioning as a <em>live</em> + system - it is essentially pure <em>Arch Linux</em></p> + </li> + + <li> + <p>Can build <em>live</em> iso images (for CD or DVD), USB-sticks, + hard disk partitions (sometimes called 'frugal' installation), etc.</p> + </li> + + <li> + <p>Can also build from existing <em>Arch</em> installation</p> + </li> + + <li> + <p>Can use standard <em>Arch</em> kernel ('kernel26'), no kernel build is + necessary</p> + </li> + + <li> + <p>Fully customizable package selection</p> + </li> + + <li> + <p>Can use isolinux/syslinux or GRUB bootloader</p> + </li> + + <li> + <p>Automatic generation of /etc/fstab based on device detection; + can also detect LVM volumes (when configured to do so)</p> + </li> + + <li> + <p>Does not require an <em>Arch Linux</em> system to build it, any modern + <em>GNU/Linux</em> system should suffice</p> + </li> + + <li> + <p>Can be used to install an already configured <em>Arch Linux</em> to hard disk - +you can test, configure and reconfigure, and even update, before you install</p> + </li> + + <li> + <p>Uses latest udev-based hardware detection</p> + </li> + + <li> + <p>Based on squashfs, aufs, initramfs (using standard <em>Arch</em> + mkinitcpio)</p> + </li> + + <li> + <p>Changes made during a session can be saved back to the boot medium + (assuming it is writeable - USB-stick, hard-disk, etc.)</p> + </li> + + <li> + <p>Full graphical system possible, e.g. with KDE, OpenOffice, GIMP, ...</p> + </li> + + <li> + <p>Using ssh it's possible to run this CD/USB-stick on a system without + monitor/keyboard - remote installation and rescue is also possible</p> + </li> + + <li> + <p>Copy to RAM possible, using boot parameter ('c2r')</p> + </li> + + <li> + <p>Optional use of existing swap partition ('swap' boot parameter)</p> + </li> + + <li> + <p>Simple text configuration files</p> + </li> + + <li> + <p>Extensive documentation</p> + </li> + + <li> + <p><em>larch</em> can itself be run from a <em>live</em> medium, allowing easy + 'larchification' of existing installations</p> + </li> + + <li> + <p>New in version 7: easier use, <em>larch</em> now has a gui</p> + </li> + + <li> + <p>New in version 7: even kernel updates are supported via the normal + pacman update process</p> + </li> + + <li> + <p>New in version 7: i18n-ready (using <em>gettext</em>)</p> + </li> + +</ul> + +</div> + + + <div class="topref"><a href="#top">Top</a></div> + </div> + <!-- begin: #footer --> + <div id="footer"> + <div id="footer-content" role="contentinfo">© 2010 Michael Towers<br /> + Page layout assisted by <a href="http://www.yaml.de/">YAML</a> and + <a href="http://www.kuwata-lab.com/tenjin/">pyTenjin</a> + </div> + </div> + <!-- end: #footer --> + </div> + <!-- end: #col1 --> + <div id="bottom"><div id="bl"><div id="bm"></div></div></div> + </div> +</div> +<!-- full skiplink functionality in webkit browsers --> +<script src="css/yaml/core/js/webkit-focusfix.js" type="text/javascript"></script> +</body> +</html> diff --git a/build_tools/l7/larch0/docs/html/larch_gui.html b/build_tools/l7/larch0/docs/html/larch_gui.html new file mode 100644 index 0000000..814e949 --- /dev/null +++ b/build_tools/l7/larch0/docs/html/larch_gui.html @@ -0,0 +1,82 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + +<html> +<head> +<meta http-equiv="Content-type" content="text/html; charset=utf-8" /> +<title>Using the GUI</title> +<!-- (en) Add your meta data here --> + +<link href="css/larchdocs.css" rel="stylesheet" type="text/css"/> +<!--[if lte IE 7]> +<link href="css/yaml/core/iehacks.css" rel="stylesheet" type="text/css" /> +<![endif]--> +</head> + +<body> +<!-- skip link navigation --> +<ul id="skiplinks"> + <li><a class="skip" href="#col1">Skip to main content (Press Enter).</a></li> +</ul> + +<div class="page_margins"> + <div class="page"> + <div id="top"><div id="tm"></div></div> + <!-- begin: #col1 --> + <div id="col1" role="main"> + <div id="col1_content"> + <div id="header" role="banner"> + <h1><span><em>live Arch Linux</em> builder</span></h1> + </div> + + <!-- begin: #col3 navigation column --> + <div id="col3" role="complementary"> + <div id="col3_content"> + <img class="indent2" alt="larch logo" src="css/screen/larch150x.png" width="150" height="150" /> + <div class="vlist"> + <ul> + <li><a href="index.html"><h6>Table Of Contents</h6></a></li> + <li><a href="gui_project_settings.html"><h6>Next:</h6> + <div class="indent1">GUI Tab: Project Settings</div></a></li> + <li><a href="larch_rebuild.html"><h6>Previous:</h6> + <div class="indent1">Recompressing the whole system</div></a></li> + </ul> + </div> + </div> + </div> + <!-- end: #col3 --> + +<div class="larchdocs"> +<h2 id="pagetitle" level="1">Using the GUI</h2> + +<p><em>larch-7</em> can be run from a graphical user interface. This presents +most of the main options in a clear way, avoiding cryptic command-line +mumbo-jumbo. +</p> + +<p>The <em>larch</em> documentation is available in the GUI, and there are +documentation pages for each of the tabs in the <em>larch</em> window. +</p> + +</div> + + + <div class="topref"><a href="#top">Top</a></div> + </div> + <!-- begin: #footer --> + <div id="footer"> + <div id="footer-content" role="contentinfo">© 2010 Michael Towers<br /> + Page layout assisted by <a href="http://www.yaml.de/">YAML</a> and + <a href="http://www.kuwata-lab.com/tenjin/">pyTenjin</a> + </div> + </div> + <!-- end: #footer --> + </div> + <!-- end: #col1 --> + <div id="bottom"><div id="bl"><div id="bm"></div></div></div> + </div> +</div> +<!-- full skiplink functionality in webkit browsers --> +<script src="css/yaml/core/js/webkit-focusfix.js" type="text/javascript"></script> +</body> +</html> diff --git a/build_tools/l7/larch0/docs/html/larch_intro.html b/build_tools/l7/larch0/docs/html/larch_intro.html new file mode 100644 index 0000000..dfed676 --- /dev/null +++ b/build_tools/l7/larch0/docs/html/larch_intro.html @@ -0,0 +1,316 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + +<html> +<head> +<meta http-equiv="Content-type" content="text/html; charset=utf-8" /> +<title>Introduction</title> +<!-- (en) Add your meta data here --> + +<link href="css/larchdocs.css" rel="stylesheet" type="text/css"/> +<!--[if lte IE 7]> +<link href="css/yaml/core/iehacks.css" rel="stylesheet" type="text/css" /> +<![endif]--> +</head> + +<body> +<!-- skip link navigation --> +<ul id="skiplinks"> + <li><a class="skip" href="#col1">Skip to main content (Press Enter).</a></li> +</ul> + +<div class="page_margins"> + <div class="page"> + <div id="top"><div id="tm"></div></div> + <!-- begin: #col1 --> + <div id="col1" role="main"> + <div id="col1_content"> + <div id="header" role="banner"> + <h1><span><em>live Arch Linux</em> builder</span></h1> + </div> + + <!-- begin: #col3 navigation column --> + <div id="col3" role="complementary"> + <div id="col3_content"> + <img class="indent2" alt="larch logo" src="css/screen/larch150x.png" width="150" height="150" /> + <div class="vlist"> + <ul> + <li><a href="index.html"><h6>Table Of Contents</h6></a></li> + <li><a href="larch_features.html"><h6>Next:</h6> + <div class="indent1">Features</div></a></li> + </ul> + </div> + </div> + </div> + <!-- end: #col3 --> + +<div class="larchdocs"> +<h2 id="pagetitle" level="1">Introduction</h2> + +<blockquote> +<h3>Warning</h3> + +<p><em>Before we get started I should point out that most of the +<em>larch</em> scripts must be run as root in order to do their work, +and that much of this work consists of deleting and overwriting files +and even complete directories. If just one of these is wrong it might make +quite a mess of your system. That is quite normal for an installer, +but you will be using it on a system that +is already configured and this is somewhat risky - if you set up your +configuration wrong (or if you or I made some other mistake ...), you +might find you have destroyed some important data and/or your system +doesn't work any more. But that's life - <strong>Share and +Enjoy!</strong></em> +</p> +</blockquote> + +<p>Below is the general introductory blurb, but for those who want to jump +straight in and try it out I would suggest the following pages as possible +starting points: +<ul> + <li><a href="larch_quick.html" >Quick Start with the GUI</a> + </li> + <li><a href="larch_quick-console.html" >Quick Start on the command line</a> + </li> +</ul> +</p> + +<h3><a name="live_system"></a>What is a <em>live</em> system?</h3> + +<p><em>larch</em> is a collection of scripts designed around the creation and +use of custom <em>live</em> CD/DVD/USB-stick versions of <em>Arch Linux</em>. +A <em>live</em> operating system is one which can reside on a removable medium +and boot on (ideally) any computer (of compatible architecture) into which +it is inserted. This can be useful in quite a variety of situations, for +example for testing purposes, for rescue purposes on machines whose +installed operating system is broken, or as an installation medium (many +linux distributions use <em>live</em> systems as installers). But there +are also situations where a permanently installed <em>live</em> system +can offer advantages over a normal installation, perhaps because of the +compression or because a <em>live</em> system is quite robust - it is +in essence read-only, and can be quite insensitive to hardware changes. +</p> + +<p>The main features of the <em>larch</em> system are listed on the +<a href="larch_features.html">Features</a> page, among the most +significant might be the use of <a href="profiles.html">'profiles'</a> +to define the characteristics of the system to be built, the ability +to write to various media with a choice of bootloaders and the +<a href="larch_sessionsave.html">session saving</a> possibilities, +allowing changes made during a <em>live</em> 'session' to be saved +back to the boot device (as long as it is writable!). +</p> + +<h3><a name="requirements"></a>Build system requirements</h3> + +<p><em>larch</em> has been designed to work without extensive demands on +the build system. Although it has been developed under <em>Arch Linux</em>, +<em>larch</em> should run on other <em>GNU/Linux</em> systems. By means +of a sort of bootstrapping, the required software has been kept to a +minimum - many of the build functions are carried out on the newly +installed <em>Arch</em> system using <em>chroot</em>. +For example, you do not need support for <em>squashfs</em> or <em>aufs</em> +on the build system. But basic utilities which are normally available on any +<em>GNU/Linux</em> system, such as <em>bash</em>, <em>mkfs.vfat</em>, +<em>mkfs.ext2</em>, <em>blkid</em> and <em>sfdisk</em> - and of course +<em>chroot</em> - are assumed to be present (on <em>Arch</em> that is packages +'bash', 'dosfstools', 'e2fsprogs', 'util-linux-ng' and 'coreutils'). +</p> + +<p> The <em>larch</em> scripts are written mainly in python, but snippets +of bash crop up here and there. +In addition to python you must also have the pexpect module available +(in <em>Arch</em> the 'python-pexpect' package). The (optional) GUI +requires pyqt. I'm not sure what the oldest supported versions are, +development was done using python-2.6 and pyqt-4.7. +I think python-2.5 should be alright, and I have heard that +pyqt-4.4 probably doesn't work. +</p> + +<h3><a name="cli_gui"></a>Command line vs. GUI</h3> + +<p> +The basic functionality of <em>larch</em> is provided by command-line scripts, +but a graphical user interface is available, to make it easier to see what +options are available and to avoid the need to remember and not mistype +obscure command line parameters. In addition to providing a front-end to the +main scripts the GUI also provides help with organising the configuration +files. +</p> + +<h3><a name="overview"></a>Overview</h3> + +<p>One design aim was easy customization, so that even relatively inexperienced +users could build personalized <em>live</em> CDs (etc.), containing whatever +packages they wanted and with their own personal configurations. The resulting +medium should also be usable for installation purposes, so that one has a +customized <em>Arch Linux</em> installation/rescue medium. As the content can +be chosen freely, a comfortable working environment is possible - in contrast +to the rather Spartan standard <em>Arch</em> installation CD. However, note +that it is also possible, using the officially supported <em>archiso</em>, to +produce a customized <em>Arch Linux</em> installation/rescue medium (see the +corresponding <em>Arch wiki</em> page). The approach taken by the two projects +is somewhat different so do have a look at both. Note that at the latest since +version 7, <em>larch</em> makes no pretence of a 'KISS' approach. The code is, +I'm afraid, rather complicated. The resulting <em>live</em> system should, +however, be very close to a normal non-<em>live Arch Linux</em> system (as +far as the <em>squashfs + aufs</em> basis allows). +</p> + +<p><em>larch</em> offers a flexible approach to building your +<em>live</em> media. You can use 'profiles' to determine what gets installed, +and how it is configured. The advantage of this method is that all your +specifications are kept together in a folder which can be used to rebuild the +same or a similar system at a later date. Alternatively you can do a normal +<em>Arch Linux</em> installation (if there is such a thing!) and then make a +<em>live</em> medium from this. You can even 'livify' your existing +installation (though it might be worth tidying it up a bit first ...). +</p> + +<p>The use of <em>squashfs</em> in the resulting system means that the space +occupied will be significantly less than in the 'raw' state, normally about a +third of the original. As a result of this design, it is not possible to write +directly to the system - which would seem to be quite a drawback, though in +some situations it can even be an advantage. The use of <em>aufs</em> (a +'unification' file-system, originally based on <em>unionfs</em>) allows the +resulting system to appear writable in spite of its actual read-only nature, +by using a writable 'overlay' in <em>tmpfs</em> (a memory-based file-system). +</p> + +<p>Normally any changes made to the system while running would be lost on +shutdown, but by saving the overlay to the boot medium (which is of course +only possible on devices which are actually writable, such as USB sticks), +data persistence can be achieved even though the basic system is actually +not writable. In spite of the different file-system structure of the +<em>live</em> system, it should behave almost identically to a normal Arch +installation in most respects. You can, for example, perform package +management as usual, but the changes are saved in the overlay, rather than +in the underlying system. Of course as the number of changes grows, so +does the size of the overlay, and at some point this will become +problematical. How <em>larch</em> manages this is explained in the +<a href="larch_sessionsave.html">session saving</a> section. +</p> + +<p>Hardware detection is provided by the same <em>udev</em> approach as is +used in a standard <em>Arch Linux</em> system. +</p> + +<p>The <em>larch</em> project comprises several components. The scripts for +building a <em>larch live</em> medium are in the <em>larch</em> package, which +need not itself be installed in the <em>live</em> system, though it may be +useful (and is indeed installed by default). Scripts and data for the +<em>live</em> environment are provided in the +<em>larch-live</em> package, which must be installed in the <em>live</em> +system. There is also an optional installer (<em>larchin</em>) which can +install the <em>live</em> system to hard disk, providing a convenient way +to install a ready-configured <em>Arch Linux</em> system. +</p> + +<p>As with <em>Arch Linux</em> in general <em>larch</em> is not really +designed for beginners - you should know your way around a +<em>GNU/Linux</em> system (preferably <em>Arch</em>!), and be aware of the +dangers of running such programs, such as corrupting your whole system. +In any case, I hope that the +documentation will be clear enough to help anyone who wants to exploit +<em>larch</em> to the full (feedback is welcome!).</p> + +<p><b>Space Requirements:</b> +You need quite a lot of space to create a <em>live Arch Linux</em> system. +Bear in mind that a complete <em>Arch Linux</em> system is installed, then, +additionally, a compressed ('squashed') version is made, and then perhaps +even a CD image (<em>iso</em>). +Building for a USB-stick requires slightly less space, as the iso-image is +not built. If building a <em>live</em> version of the currently running +<em>Arch Linux</em> system, much less space is required as no new +system must be installed - but there are additional problems with this +approach which make it generally not the best way (see +<a href="larchify.html#existingSystem">the section dealing +with this</a>). +</p> + +<h3><a name="larch_installation"></a>Installation of the <em>larch</em> build +system</h3> + +<p>The recommended way of installing <em>larch</em> is by means of the setup +script, see <a href="larch_quick-console.html">here</a> for details. +This installs all the necessary packages to a working directory, and it +should also work on non-<em>Arch</em> linux systems. +</p> + +<p>The <em>larch</em> package may, however, be installed in the normal +<em>Arch Linux</em> way using <em>pacman</em>. This method will only work on +an <em>Arch</em> system, of course. The <em>larch</em> repository is at +<a href="ftp://ftp.berlios.de/pub/larch/larch7.2/i686/"> +<strong>berlios</strong></a>. +</p> + +<p>The <em>larch</em> command line scripts need to be started as root, and +each has a usage message (run with the '-h' option). The gui should be +started as a normal user (it uses <em>sudo</em> to get administrator +permissions when needed). +</p> + +<h3><a name="larch_profiles"></a>Profiles</h3> + +<p>A <em>larch</em> 'profile' is a directory containing the information +needed to build a particular 'flavour' of <em>Arch Linux</em> as a +<em>live</em> system - which packages to install, and how it should be +set up. For details see <a href="profiles.html">Profiles</a>. +</p> + +<h3><a name="stages"></a>The stages of the build process</h3> + +<p>The starting point is an <em>Arch Linux</em> installation. This can +be an already existing one from which you want to make a <em>live</em> +version, or - the recommended approach - you can use the +'Installation' stage of the <em>larch</em> system +(using the <strong>larch-archin</strong> script) to prepare this. +This script downloads all the desired packages (if they are not already +in the host's package cache) and installs them to a directory on the host +(the default is '/home/larchbuild'). See <a href="archin.html">this page</a> +for details. +</p> + +<p>Once we have the <em>Arch Linux</em> installation this can be +processed to build the basis components for the <em>live</em> medium. The +installation is compressed into a <em>squashfs</em> archive, and a second +<em>squashfs</em> archive is built, which will function as a sort of +'patch' file for the basic installation, containing a few necessary +adjustments for running as a <em>live</em> system and also the +customizations specified in the <em>profile</em>. The other important +component is the <em>initramfs</em>, which also needs to be adapted +to boot the <em>live</em> system. This processing is performed by the +<strong>larch-larchify</strong> script, see +<a href="larchify.html">this page</a> for details. +</p> + +<p>When the 'larchification' has been completed, the components can +be packed together onto a boot medium together with a bootloader. The +<strong>larch-live_iso</strong> script creates an <em>iso</em> file, which +can then be written to a CD or DVD, the <strong>larch-live_part</strong> +script sets up a bootable partition on a disk(-like) device, such as a +USB stick. See <a href="medium.html">this page</a> for details. +</p> + +</div> + + + <div class="topref"><a href="#top">Top</a></div> + </div> + <!-- begin: #footer --> + <div id="footer"> + <div id="footer-content" role="contentinfo">© 2010 Michael Towers<br /> + Page layout assisted by <a href="http://www.yaml.de/">YAML</a> and + <a href="http://www.kuwata-lab.com/tenjin/">pyTenjin</a> + </div> + </div> + <!-- end: #footer --> + </div> + <!-- end: #col1 --> + <div id="bottom"><div id="bl"><div id="bm"></div></div></div> + </div> +</div> +<!-- full skiplink functionality in webkit browsers --> +<script src="css/yaml/core/js/webkit-focusfix.js" type="text/javascript"></script> +</body> +</html> diff --git a/build_tools/l7/larch0/docs/html/larch_live_system.html b/build_tools/l7/larch0/docs/html/larch_live_system.html new file mode 100644 index 0000000..1f7bbeb --- /dev/null +++ b/build_tools/l7/larch0/docs/html/larch_live_system.html @@ -0,0 +1,220 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + +<html> +<head> +<meta http-equiv="Content-type" content="text/html; charset=utf-8" /> +<title>Structure of a larch live system</title> +<!-- (en) Add your meta data here --> + +<link href="css/larchdocs.css" rel="stylesheet" type="text/css"/> +<!--[if lte IE 7]> +<link href="css/yaml/core/iehacks.css" rel="stylesheet" type="text/css" /> +<![endif]--> +</head> + +<body> +<!-- skip link navigation --> +<ul id="skiplinks"> + <li><a class="skip" href="#col1">Skip to main content (Press Enter).</a></li> +</ul> + +<div class="page_margins"> + <div class="page"> + <div id="top"><div id="tm"></div></div> + <!-- begin: #col1 --> + <div id="col1" role="main"> + <div id="col1_content"> + <div id="header" role="banner"> + <h1><span><em>live Arch Linux</em> builder</span></h1> + </div> + + <!-- begin: #col3 navigation column --> + <div id="col3" role="complementary"> + <div id="col3_content"> + <img class="indent2" alt="larch logo" src="css/screen/larch150x.png" width="150" height="150" /> + <div class="vlist"> + <ul> + <li><a href="index.html"><h6>Table Of Contents</h6></a></li> + <li><a href="larch_sessionsave.html"><h6>Next:</h6> + <div class="indent1">Saving a session back to the boot device (or even somewhere else)</div></a></li> + <li><a href="profiles.html"><h6>Previous:</h6> + <div class="indent1">Profiles</div></a></li> + </ul> + </div> + </div> + </div> + <!-- end: #col3 --> + +<div class="larchdocs"> +<h2 id="pagetitle" level="1">Structure of a <em>larch live</em> system</h2> + +<p>The vast majority of the code that runs in a <em>live</em> CD/USB system +is exactly the same as in a normal system running from hard disk. +The main differences arise through the <em>live</em> system being based on +a read-only root file-system, so various adjustments are necessary to +make the areas that must be writeable appear to be so. I say 'appear to be' +because in general any changes will be lost when the system shuts down, +the actual changes being made only in a RAM-based filesystem (but see +<a href="larch_sessionsave.html">"Session saving"</a>). +</p> + +<h3><a name="Squashfs_and_Unionfs"></a>squashfs and aufs</h3> + +<p>In <em>larch</em>, as in many other <em>live</em> systems, the +ability to (apparently) write to a read-only file-system is provided by +<em>aufs</em> (originally derived from <em>unionfs</em>). +The file-system is also compressed, using <em>squashfs</em>, so as to fit +more data onto the storage device. A custom <em>Arch Linux</em> installation +(you can choose which packages are installed) is compressed into a +<em>squashfs</em> file-system in the file <strong>system.sqf</strong>, +which is placed in the 'larch' directory of the boot device. +</p> + +<p>For use in a <em>live</em> system a few changes must be made to some files +in the installation. In <em>larch</em> this is usually not done directly, +the installed system is left in a 'clean' state. Instead of that, an additional +<em>union</em> layer is created, in the archive <strong>mods.sqf</strong>, +containing all the modified files. The user is free to include (pretty well) +any customizations (s)he wants in this overlay file, which is also placed +in the 'larch' directory of the boot device. +</p> + +<p>Using <em>larch</em>'s merge-overlay feature it is possible to +rebuild the 'mods.sqf' archive to incorporate subsequent changes to the +system. When this is done an additional <em>union</em> layer +(<strong>filter.sqf</strong>) will be created. For further details see the +<a href="larch_sessionsave.html">session saving page</a>. +</p> + +<p>These system archives are combined when the <em>live</em> system +boots. They are mounted as branches of a <em>union</em> (<em>aufs</em>) +file-system with the overlay above the 'standard' system, so that files in +the overlay have priority over the original ones. A further, <em>tmpfs</em>, +layer is placed on top of these, which effectively makes the whole system +writeable. When <a href="larch_sessionsave.html">session saving</a> is being +used this top layer is initialized during the boot sequence, by copying the +contents of a compressed archive (<strong>overlay.tar.lzo</strong>) into it. +<em>lzo</em> compression is used here because of its speed ('lzop' is a +dependency of the 'larch-live' package). +</p> + +<h3><a name="initramfs"></a><em>initramfs</em> and <em>mkinitcpio</em></h3> + +<p>It is, in general, not possible to boot directly into a <em>live</em> +system. +Some form of 'initrd' or 'initramfs' is required, in order to find the boot +device, prepare the <em>union</em> file-system and prepare it for running. +Many modern <em>GNU/Linux</em> systems use initrd/initramfs (the former +being now deprecated) as a matter of course, for loading the necessary kernel +modules, and <em>Arch Linux</em> is no exception, a modular initramfs system +(<em>mkinitcpio</em>) being the standard way to boot <em>Arch Linux</em>, +and <em>larch</em> also takes advantage of it, although some additions need +to be made to boot <em>live</em> systems. +</p> + +<p><em>larch</em> adds several 'hooks' (code plug-ins) to the +<em>Arch Linux mkinitcpio</em> system (they are in the 'larch-live' package). +The first, 'larch1', is concerned with finding the boot device. +It can select a device on the basis +of UUID, partition label, partition name ('/dev/sdb1', etc.) or else it can +search all available devices for the file '/larch/larchboot'. A simple +validity check is made by testing the existence of the '/larch/system.sqf' +archive. +</p> + +<p>The second hook comes in two flavours - one for <em>aufs</em> and one +for <em>unionfs</em> - it just sets some variables according to which +unioning file-system is being used (at the moment only <em>aufs</em> +is properly supported). +</p> + +<p>The third hook, 'larch3', performs the actual preparation of the +<em>larch</em> root file-system, combining the system and overlay archives +with a <em>tmpfs</em> upper layer in a <em>union</em> and carrying out +various other initializations. +</p> + +<p>In order to generate the special <em>initramfs</em> a customized +'/etc/mkinitcpio.conf' is used, prepared during the build process from the +template '/etc/mkinitcpio.conf.larch0' and saved as +'/etc/mkinitcpio.conf.larch'. If you want to customize this, you need to +edit '/etc/mkinitcpio.conf.larch0' in 'rootoverlay' in the profile (the +gui has a button for this). +</p> + +<p>There is also a customized <em>mkinitcpio</em> preset in '/etc/mkinitcpio.d', +also working with a template - 'larch.preset0' is used to produce 'larch.preset' +during the build operation. In addition this preset replaces the standard +preset belonging to the kernel, so that subsequent kernel updates (etc.) +will regenerate a correct <em>initramfs</em> for the <em>larch</em> system. +If you want to revert to the normal <em>Arch Linux mkinitcpio</em> behaviour +(for example, if you are installing the system) you will need to replace +the preset by the original, which gets saved with '.larchsave' appended. +</p> + + +<h3><a name="rc_files"></a>/etc/rc.sysinit and /etc/rc.shutdown</h3> + +<p>The initial boot script and the shutdown script must be customized for use +in a <em>larch live</em> environment. This is achieved by using hooks in the +standard /etc/rc.sysinit and /etc/rc.shutdown scripts. The file +'etc/rc.d/functions.d/larch-hooks', in the 'larch-live' package, defines these. +During startup the main tweaks are to the content of /etc/mtab and /etc/fstab. +During shutdown we probably want to disable writing to the hardware clock, but +the main addition is the session saving code. If booting from CD/DVD we will +want to eject this just before shutting down. +</p> + +<h3><a name="fstab"></a>/etc/fstab</h3> + +<p>If the file '/etc/fstab.larch' exists this will be used as a persistent +'/etc/fstab', being copied there during the boot process (in the 'larch3' +hook in the initramfs system). Otherwise a very minimal '/etc/fstab' will +be generated at each boot. It includes entries for any existing swap +partitions, but these are commented out unless the 'swap' boot parameter +is specified (the default <em>larch</em> behaviour is to mount nothing +automatically). +</p> + +<p>The 'x10d_fstab' script in the 'larch-live' package allows the very basic +/etc/fstab generated by the initramfs system ('larch3' hook) to be extended +automatically, but '/etc/fstab' will only be changed if '/etc/fstab.larch' +doesn't exist. +This script adds entries for the partitions it detects, and also mount points +in '/mnt' for them. The entries are such that the partitions are not mounted +automatically. +</p> + +<h3><a name="aufs"></a>[<em>unionfs as an alternative to aufs</em>]</h3> + +<p>In principle, <em>unionfs</em> can be used instead of <em>aufs</em>, +but as <em>aufs</em> is supported by current <em>Arch Linux</em> kernels +it is obviously the first choice. Indeed the current <em>larch</em> code +probably won't work with <em>unionfs</em>, as it hasn't been tested - but +the framework to support it is in place. +</p> + + +</div> + + + <div class="topref"><a href="#top">Top</a></div> + </div> + <!-- begin: #footer --> + <div id="footer"> + <div id="footer-content" role="contentinfo">© 2010 Michael Towers<br /> + Page layout assisted by <a href="http://www.yaml.de/">YAML</a> and + <a href="http://www.kuwata-lab.com/tenjin/">pyTenjin</a> + </div> + </div> + <!-- end: #footer --> + </div> + <!-- end: #col1 --> + <div id="bottom"><div id="bl"><div id="bm"></div></div></div> + </div> +</div> +<!-- full skiplink functionality in webkit browsers --> +<script src="css/yaml/core/js/webkit-focusfix.js" type="text/javascript"></script> +</body> +</html> diff --git a/build_tools/l7/larch0/docs/html/larch_quick-console.html b/build_tools/l7/larch0/docs/html/larch_quick-console.html new file mode 100644 index 0000000..bb50e70 --- /dev/null +++ b/build_tools/l7/larch0/docs/html/larch_quick-console.html @@ -0,0 +1,136 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + +<html> +<head> +<meta http-equiv="Content-type" content="text/html; charset=utf-8" /> +<title>Quick Start - Console</title> +<!-- (en) Add your meta data here --> + +<link href="css/larchdocs.css" rel="stylesheet" type="text/css"/> +<!--[if lte IE 7]> +<link href="css/yaml/core/iehacks.css" rel="stylesheet" type="text/css" /> +<![endif]--> +</head> + +<body> +<!-- skip link navigation --> +<ul id="skiplinks"> + <li><a class="skip" href="#col1">Skip to main content (Press Enter).</a></li> +</ul> + +<div class="page_margins"> + <div class="page"> + <div id="top"><div id="tm"></div></div> + <!-- begin: #col1 --> + <div id="col1" role="main"> + <div id="col1_content"> + <div id="header" role="banner"> + <h1><span><em>live Arch Linux</em> builder</span></h1> + </div> + + <!-- begin: #col3 navigation column --> + <div id="col3" role="complementary"> + <div id="col3_content"> + <img class="indent2" alt="larch logo" src="css/screen/larch150x.png" width="150" height="150" /> + <div class="vlist"> + <ul> + <li><a href="index.html"><h6>Table Of Contents</h6></a></li> + <li><a href="larch_quick.html"><h6>Next:</h6> + <div class="indent1">Quick Start</div></a></li> + <li><a href="larch_features.html"><h6>Previous:</h6> + <div class="indent1">Features</div></a></li> + </ul> + </div> + </div> + </div> + <!-- end: #col3 --> + +<div class="larchdocs"> +<h2 id="pagetitle" level="1">Quick Start - Console</h2> + +<p>This is a quick run through of the steps needed to download <em>larch</em> +and use it to build a <em>live</em> system from one of the example profiles +provided in the 'larch-profiles' package. You can use this as an introduction +to <em>larch</em>, and as a basis for your own customized system if you like. +</p> + +<ul> + <li>Make sure you have 'python' and 'python-pexpect' packages installed. + </li> + <li>Download the latest + <a href="ftp://ftp.berlios.de/pub/larch/larch7.2/i686/larch-setup"> + <strong>larch-setup</strong></a> script + to an empty working directory. Then run it (it is a shell script). + It will download and prepare the 'larch' and 'larch-profiles' packages + so that they can be used within this directory. + </li> + <li>Several links will appear in the working directory. These point at the + individual <em>larch</em> scripts. Each has a usage message which you + can read by running the script with the '-h' option (e.g. + './larch-archin -h') + </li> + <li>For this example run I will use the 'xmini' profile (which builds a + simple XFCE based system). The following steps must be carried out as root. + </li> + <li>Install the base <em>Arch</em> system to the default location + ('/home/larchbuild'): + <ul> + <li>If you are running <em>Arch</em> the default package mirror is taken + from /etc/pacman.d/mirrorlist. On a non-<em>Arch</em> system this file + (probably) won't exist, in which case the first uncommented server in + larch0/data/mirrorlist is used (this file comes from the 'pacman-allin' + package, which should be downloaded automatically in this case). The + default server might be alright, but if not you should edit this file. + </li> + <li><pre>./larch-archin -p larch0/profiles/xmini install</pre> + </li> + </ul> + </li> + <li>Prepare the <em>live</em> system. This script compresses the + installation using squashfs and also builds a squashed overlay containing + all the customizations necessary for the <em>live</em> system, plus those + specified in the profile: + <pre>./larch-larchify -p larch0/profiles/xmini</pre> + </li> + <li>Create a bootable 'iso' containing the <em>live</em> system: + <pre>./larch-live_iso -p larch0/profiles/xmini</pre> + </li> + <li>As an alternative to the last step, make a bootable USB-stick: + Insert the stick and double-check the name of the partition to install to. + I will assume /dev/sdb1 here: + <pre>./larch-live_part -p larch0/profiles/xmini sdb1</pre> + </li> + <li>If all that worked, you can test the resulting 'iso' in (for example) + <em>virtualbox</em> (select the 'vesa' option from the boot menu, otherwise + <em>xorg</em> probably won't start), or try to boot from the USB-stick. + </li> + <li>If you want to try your hand at designing your own system, the main + place to look for details of the customization process is the + section <a href="profiles.html">Profiles</a>. + </li> + <li> Share and Enjoy!</li> +</ul> + +</div> + + + <div class="topref"><a href="#top">Top</a></div> + </div> + <!-- begin: #footer --> + <div id="footer"> + <div id="footer-content" role="contentinfo">© 2010 Michael Towers<br /> + Page layout assisted by <a href="http://www.yaml.de/">YAML</a> and + <a href="http://www.kuwata-lab.com/tenjin/">pyTenjin</a> + </div> + </div> + <!-- end: #footer --> + </div> + <!-- end: #col1 --> + <div id="bottom"><div id="bl"><div id="bm"></div></div></div> + </div> +</div> +<!-- full skiplink functionality in webkit browsers --> +<script src="css/yaml/core/js/webkit-focusfix.js" type="text/javascript"></script> +</body> +</html> diff --git a/build_tools/l7/larch0/docs/html/larch_quick.html b/build_tools/l7/larch0/docs/html/larch_quick.html new file mode 100644 index 0000000..eeb035b --- /dev/null +++ b/build_tools/l7/larch0/docs/html/larch_quick.html @@ -0,0 +1,148 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + +<html> +<head> +<meta http-equiv="Content-type" content="text/html; charset=utf-8" /> +<title>Quick Start</title> +<!-- (en) Add your meta data here --> + +<link href="css/larchdocs.css" rel="stylesheet" type="text/css"/> +<!--[if lte IE 7]> +<link href="css/yaml/core/iehacks.css" rel="stylesheet" type="text/css" /> +<![endif]--> +</head> + +<body> +<!-- skip link navigation --> +<ul id="skiplinks"> + <li><a class="skip" href="#col1">Skip to main content (Press Enter).</a></li> +</ul> + +<div class="page_margins"> + <div class="page"> + <div id="top"><div id="tm"></div></div> + <!-- begin: #col1 --> + <div id="col1" role="main"> + <div id="col1_content"> + <div id="header" role="banner"> + <h1><span><em>live Arch Linux</em> builder</span></h1> + </div> + + <!-- begin: #col3 navigation column --> + <div id="col3" role="complementary"> + <div id="col3_content"> + <img class="indent2" alt="larch logo" src="css/screen/larch150x.png" width="150" height="150" /> + <div class="vlist"> + <ul> + <li><a href="index.html"><h6>Table Of Contents</h6></a></li> + <li><a href="archin.html"><h6>Next:</h6> + <div class="indent1">Installation of the base Arch system</div></a></li> + <li><a href="larch_quick-console.html"><h6>Previous:</h6> + <div class="indent1">Quick Start - Console</div></a></li> + </ul> + </div> + </div> + </div> + <!-- end: #col3 --> + +<div class="larchdocs"> +<h2 id="pagetitle" level="1">Quick Start</h2> + +<p>The gui should make exploration of the possibilities offered by <em>larch</em> +quite straightforward. The documentation should provide enough information to +understand how a <em>larch live</em> system works, so that further customizations +can be performed beyond those directly supported. +</p> +<p>The general sequence of events starts with creating a 'project', which will +determine certain aspects of the build environment (such as where to place the +installation files), and select a profile. The profile describes the system to be +installed (primarily which packages, but also various other aspects). All this +configuration information is stored in the user's home directory (~/.config/larch), +so that it is retained from one <em>larch</em> run to the next. +</p> + +<ul> + <li>At present I only maintain a repository for 'i686', as I don't run a 64-bit + <em>Arch</em> machine, but as all the current <em>larch</em> packages + have architecture 'any', both architectures should be supported. + </li> + <li>Make sure you have 'pyqt' and 'python-pexpect' packages installed. + </li> + <li>Download the latest + <a href="ftp://ftp.berlios.de/pub/larch/larch7.2/i686/larch-setup"> + <strong>larch-setup</strong></a> script + to an empty working directory. Then run it (it is a shell script). + It will download and prepare the 'larch' and 'larch-profiles' packages so that + <em>larch</em> can be run from this directory. + </li> + <li>Run './larch' in the working directory. + As it is a gui program, you must of course be running xorg (see + <a href="larch_quick-console.html">Command-Line Interface</a> + for use from the command line). In general you should start <em>larch</em> + as a normal, unprivileged user, so that the access to the configuration + files is as the correct user. It will ask for the <em>sudo</em> + password when it needs it. + </li> + <li>To build a <em>larch live</em> system you basically just have to go through + the tabs one after the other. + </li> + <li>The first tab allows you to create a project and select a profile. The 'mini' + (no <em>xorg</em>) and 'xmini' (a fairly minimal <em>xfce</em> desktop) examples + (from the supplied 'profiles' folder) might be good places to start. + The default installation path should be alright for most purposes, + but you might need to move it if you don't have enough space on that partition. + Be careful! If you put a silly path in here you might overwrite your system. + </li> + <li>The 'Installation' tab performs the installation of the system to be squashed, + by downloading and installing all the requested packages to the installation path + set for the project. You can adjust a few aspects of this process, for example + to use a local package mirror, or to add repositories to pacman.conf. The default + is to use the mirror set on the host system and also to use the host's package + cache, so that repeated builds don't need to download the packages all over + again. + </li> + <li>The 'Larchify' tab compresses the installation using squashfs, also building + a squashed overlay containing all the customizations necessary for the + <em>live</em> system and those specified in the profile. + </li> + <li>A few customizations of the medium are accessible on the 'Medium Profile' tab, + for example the bootloader configurations. + </li> + <li>Finally the 'Medium' tab writes the prepared <em>larch</em> files to an + <em>iso</em> file (for CD or DVD), or to the partition of your choice (be careful!), + so that you end up with a bootable <em>larch</em> system. + </li> + <li>Particular things that you might want to customize even in a first test run might + be the supported <strong>locales</strong> and <strong>rc.conf</strong> (both on the + 'Larchify' tab). + </li> + <li>Further details of the customization process are in the section + <a href="profiles.html">Profiles</a> and in the documentation to the individual + gui tabs. + </li> + <li> Share and Enjoy!</li> +</ul> + +</div> + + + <div class="topref"><a href="#top">Top</a></div> + </div> + <!-- begin: #footer --> + <div id="footer"> + <div id="footer-content" role="contentinfo">© 2010 Michael Towers<br /> + Page layout assisted by <a href="http://www.yaml.de/">YAML</a> and + <a href="http://www.kuwata-lab.com/tenjin/">pyTenjin</a> + </div> + </div> + <!-- end: #footer --> + </div> + <!-- end: #col1 --> + <div id="bottom"><div id="bl"><div id="bm"></div></div></div> + </div> +</div> +<!-- full skiplink functionality in webkit browsers --> +<script src="css/yaml/core/js/webkit-focusfix.js" type="text/javascript"></script> +</body> +</html> diff --git a/build_tools/l7/larch0/docs/html/larch_rebuild.html b/build_tools/l7/larch0/docs/html/larch_rebuild.html new file mode 100644 index 0000000..0433349 --- /dev/null +++ b/build_tools/l7/larch0/docs/html/larch_rebuild.html @@ -0,0 +1,100 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + +<html> +<head> +<meta http-equiv="Content-type" content="text/html; charset=utf-8" /> +<title>Recompressing the whole system</title> +<!-- (en) Add your meta data here --> + +<link href="css/larchdocs.css" rel="stylesheet" type="text/css"/> +<!--[if lte IE 7]> +<link href="css/yaml/core/iehacks.css" rel="stylesheet" type="text/css" /> +<![endif]--> +</head> + +<body> +<!-- skip link navigation --> +<ul id="skiplinks"> + <li><a class="skip" href="#col1">Skip to main content (Press Enter).</a></li> +</ul> + +<div class="page_margins"> + <div class="page"> + <div id="top"><div id="tm"></div></div> + <!-- begin: #col1 --> + <div id="col1" role="main"> + <div id="col1_content"> + <div id="header" role="banner"> + <h1><span><em>live Arch Linux</em> builder</span></h1> + </div> + + <!-- begin: #col3 navigation column --> + <div id="col3" role="complementary"> + <div id="col3_content"> + <img class="indent2" alt="larch logo" src="css/screen/larch150x.png" width="150" height="150" /> + <div class="vlist"> + <ul> + <li><a href="index.html"><h6>Table Of Contents</h6></a></li> + <li><a href="larch_gui.html"><h6>Next:</h6> + <div class="indent1">Using the GUI</div></a></li> + <li><a href="larch_running.html"><h6>Previous:</h6> + <div class="indent1">Running a larch live system</div></a></li> + </ul> + </div> + </div> + </div> + <!-- end: #col3 --> + +<div class="larchdocs"> +<h2 id="pagetitle" level="1">Recompressing the whole system</h2> + +<p>The <em>larch-live</em> package provides the 'larch-rebuild' script, which +regenerates the system archives 'system.sqf' and 'mods.sqf' from the state of the +system at the last session save (i.e. from the files on the boot medium). All the +changes which have been gathered in the overlay archive are merged into the new +'system.sqf', thus (potentially) reducing the space requirements considerably. The +directory for the storage of these new archives must be passed as argument to the +script. +</p> + +<p>No further handling of these new archives is provided with <em>larch</em> +at present, for the simple reason that it is difficult to find a general solution to the +question of what to do with them. They cannot just replace the archives on the +boot medium because these are required to keep the <em>live</em> system running. +So some temporary storage is needed for them, and it is quite conceivable that there +is not enough space on the medium (as that might well be the reason for wanting +to recompress the system in the first place). +</p> + +<p>Thus some details of how to implement this rebuild feature are currently left to +the creativity of the user. I would, however suggest that the medium file 'larch/boot-init' +(see <a href="larch_sessionsave.html#boot-init">boot-init</a>) might be a useful place +to perform the replacement of the archives. You would just have to write a script +using 'larch-rebuild' to save the new archives somewhere, and write this 'boot-init' +script to replace the old ones with the new ones, remembering to also delete any +sqf files ending in '_' and '~' and the 'overlay.tar.lzo' archive. +</p> + +</div> + + + <div class="topref"><a href="#top">Top</a></div> + </div> + <!-- begin: #footer --> + <div id="footer"> + <div id="footer-content" role="contentinfo">© 2010 Michael Towers<br /> + Page layout assisted by <a href="http://www.yaml.de/">YAML</a> and + <a href="http://www.kuwata-lab.com/tenjin/">pyTenjin</a> + </div> + </div> + <!-- end: #footer --> + </div> + <!-- end: #col1 --> + <div id="bottom"><div id="bl"><div id="bm"></div></div></div> + </div> +</div> +<!-- full skiplink functionality in webkit browsers --> +<script src="css/yaml/core/js/webkit-focusfix.js" type="text/javascript"></script> +</body> +</html> diff --git a/build_tools/l7/larch0/docs/html/larch_running.html b/build_tools/l7/larch0/docs/html/larch_running.html new file mode 100644 index 0000000..2275139 --- /dev/null +++ b/build_tools/l7/larch0/docs/html/larch_running.html @@ -0,0 +1,216 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + +<html> +<head> +<meta http-equiv="Content-type" content="text/html; charset=utf-8" /> +<title>Running a larch live system</title> +<!-- (en) Add your meta data here --> + +<link href="css/larchdocs.css" rel="stylesheet" type="text/css"/> +<!--[if lte IE 7]> +<link href="css/yaml/core/iehacks.css" rel="stylesheet" type="text/css" /> +<![endif]--> +</head> + +<body> +<!-- skip link navigation --> +<ul id="skiplinks"> + <li><a class="skip" href="#col1">Skip to main content (Press Enter).</a></li> +</ul> + +<div class="page_margins"> + <div class="page"> + <div id="top"><div id="tm"></div></div> + <!-- begin: #col1 --> + <div id="col1" role="main"> + <div id="col1_content"> + <div id="header" role="banner"> + <h1><span><em>live Arch Linux</em> builder</span></h1> + </div> + + <!-- begin: #col3 navigation column --> + <div id="col3" role="complementary"> + <div id="col3_content"> + <img class="indent2" alt="larch logo" src="css/screen/larch150x.png" width="150" height="150" /> + <div class="vlist"> + <ul> + <li><a href="index.html"><h6>Table Of Contents</h6></a></li> + <li><a href="larch_rebuild.html"><h6>Next:</h6> + <div class="indent1">Recompressing the whole system</div></a></li> + <li><a href="larch_ssh.html"><h6>Previous:</h6> + <div class="indent1">ssh access</div></a></li> + </ul> + </div> + </div> + </div> + <!-- end: #col3 --> + +<div class="larchdocs"> +<h2 id="pagetitle" level="1">Running a <em>larch live</em> system</h2> + +<p>Of course the details depend on what you have installed and how you have +configured it. For example, the 'mini2' example profile builds a console-only system, +the 'xmaxi' profile boots to <em>xfce</em>. +</p> + +<p>One thing worth noting is that these supplied profiles automatically login +to the root account, which - potentially - allows all sorts of 'dangerous' actions, +like reformatting your disks or making a mess of your file-systems in other ways. +This is because one of the main <em>raisons d'être</em> for <em>larch</em> is its use +as an <em>Arch</em>-installation-and-rescue medium. For this, you need root access. +However, if you want to use the system in other ways, e.g. for text or image editing, +or for internet browsing or e-mail writing, it might be safer to do this as an +unprivileged user. Such a user is easily created with the 'adduser' command, or +with some other utility (e.g. the graphical 'luser.py' script in the <em>larch</em> +'<em>luser</em>' package). If you have a writeable boot medium, such changes can be +'remembered' by saving the session when you shut the system down (the possibility +will normally be offered automatically). +</p> + +<h3><a name="bootparm"></a>Boot parameters</h3> + +<p>As the <em>larch</em> build system is highly configurable, the available +boot parameters can also vary, but by default 'swap' and 'c2r' are provided. +'swap' indicates that an existing swap partition should be used (the default +is not to use it). 'c2r' means 'copy to RAM', i.e. the system data is copied +to main memory before the system is initialized. This allow the system to run +very fast and frees up the boot device (e.g. the boot CD can be ejected and the +drive used for another CD), but it does require a lot of memory (significantly +more than the size of the boot medium), and the boot process is rather slow +because so much data must be copied. Because of the high memory usage, I have +arranged it so that 'c2r' also implies 'swap'. With A USB-stick as boot medium, +the 'c2r' parameter should generally not really be needed, performance is normally +pretty good and it doesn't occupy the CD-drive (if an extra boot CD is needed, on +a machine that can't boot directly from USB, that can be removed after +booting even without 'c2r'). +</p> +<p>There are also boot options connected with the boot device. The 'nocd' boot +option, if present, prevents booting from CD. This might be useful if you use a +boot CD but want to boot a <em>larch</em> system on another device (normally +a CD will be detected before other devices). This only works if the kernel is +compatible of course. +</p> +<p>The 'root=' option allows explicit specification of the device containing the +<em>larch</em> system. It is also possible to choose the boot device on the basis +of UUID ('uuid=') or label ('label='). The default maximum waiting time (to +allow USB devices to be recognized) is 12 seconds (if a device is recognized +earlier the pause will automatically be shorter), which should be adequate, but +if you want to change this you can do it using the 'usbdelay=' option. +</p> + +<h3><a name="config"></a>Configuration</h3> + +<p>The supplied profiles are not intended to be complete, though I hope they +work reasonably well. They should be seen as examples, perhaps as starting points +for your own configurations. +If you are running a profile with X11, you may find that you +need to configure it before it will run, though nowadays much hardware will work +to at least some extent without any tweaking (even without an 'xorg.conf'). +Minimal starting-point 'xorg.conf' files are offered in the <em>xfce</em> examples. +</p> + +<p>The 'xmini' and 'xmaxi' profiles use a slightly more elaborate login approach on +the first terminal, with a simple menu as well as automatic login. There is also +a logout gui for <em>xfce</em>, which together with the login script can +trigger session saving directly, bypassing the console prompt. +</p> + +<p>If you are stuck with the console, there is still hope. It's not as pretty or +newbie friendly as an X11 desktop, but still quite capable. I always like to have +<em>mc</em> available, it's a real godsend for non-geeks (you should also install +<em>lynx</em> so that HTML files can be displayed on the console - at a +pinch you can also surf with it, but it is painful). +</p> + +<p>If your console keyboard map is +wrong, try running <i>km</i> (I stole this from the +standard <em>Arch</em> install CD and modified it a bit to work in <em>larch</em>). +It also modifies '/etc/rc.conf', so the change can be retained for subsequent +runs by performing a 'session-save'. +</p> + +<p>If you have a DHCP server on your network, you might well find that +the network interface is configured automatically (assuming your <em>rc.conf</em> +is configured appropriately). Otherwise you can use any method to set up +the network available in <em>Arch Linux</em> - see the appropriate +<em>Arch Linux</em> documentation (primarily the wiki, I guess) for details. +</p> + +<p>Of course the exact details of what you can do depends on what +software you installed, so I won't rabbit on endlessly about it here. +Nearly all configuration details should be just the same as in a normal, +hard-disk based installation. +</p> + +<h3><a name="install"></a>Installation to hard disk</h3> + +<p>The <em>larch</em> hard-disk installer <em>larchin</em> may be used to install +<em>Arch Linux</em> to hard disk (or similar). ***+ Or, at least it will be +possible to use it when I have updated (rewritten?) it for <em>larch</em>-7. -*** +<em>larchin</em> deals with partitioning and formatting of hard drives, placing +<em>Arch Linux</em> (primarily a copy of the live system on which it is running) +on the newly formatted partitions, and installation of the GRUB bootloader. +</p> + +<p>As mentioned above the main approach to <em>Arch</em> installation covered by +<em>larchin</em> is to copy the contents of the live system to a hard drive. Those +(few) bits peculiar to the needs of a live system are removed and the result is a +completely normal <em>Arch Linux</em> installation. I should perhaps mention +the file 'delarch' in the '/.livesys' directory (copied there from the 'larch/copy' +directory on the boot medium). This script (if it exists) is run at the end +of the installation +and allows custom installation actions to be performed (the +main reason for its existence is to allow features of the <em>live</em> system +to be removed, because they would be out of place in a normal installation). +</p> + +<h3><a name="install-live"></a>'Live' installation to hard disk</h3> +<p>This is sometimes called a 'frugal' install and means that the system +as it is (compressed, running in a <em>union</em> file system) on the +USB-stick or CD is installed as a <em>live</em> system to a hard-drive +partition. This might be useful if you want to run from a flash device, +for example, as it minimizes write operations to the device (normal access +is read only). +</p> +<p>The <strong>larch2hdd</strong> script (in the <em>larch-live</em> package) +performs such an installation. The partition for the installation should exist +before calling this script, which will format it as <em>ext2</em>. The script +will also install GRUB, either to the same partition or else to the MBR. +</p> + +<h3><a name="change-medium"></a>Copying the <em>live</em> system to other +media</h3> +<p>The bootloader configuration files for both isolinux(/syslinux) and grub +are copied to the medium when it is being built, regardless of which +bootloader has actually been selected. This will, however, only happen +if the support packages for the corresponding bootloader is installed in +the <em>live</em> system. This behaviour allows the <em>larch</em> scripts +to copy an already built system from one medium to another, retaining the +boot commands, and even switching the bootloader. See the +<a href="medium.html">documentation</a> for +the 'larch-live_iso' and 'larch-live_part' scripts. +</p> + +</div> + + + <div class="topref"><a href="#top">Top</a></div> + </div> + <!-- begin: #footer --> + <div id="footer"> + <div id="footer-content" role="contentinfo">© 2010 Michael Towers<br /> + Page layout assisted by <a href="http://www.yaml.de/">YAML</a> and + <a href="http://www.kuwata-lab.com/tenjin/">pyTenjin</a> + </div> + </div> + <!-- end: #footer --> + </div> + <!-- end: #col1 --> + <div id="bottom"><div id="bl"><div id="bm"></div></div></div> + </div> +</div> +<!-- full skiplink functionality in webkit browsers --> +<script src="css/yaml/core/js/webkit-focusfix.js" type="text/javascript"></script> +</body> +</html> diff --git a/build_tools/l7/larch0/docs/html/larch_sessionsave.html b/build_tools/l7/larch0/docs/html/larch_sessionsave.html new file mode 100644 index 0000000..2f2ca95 --- /dev/null +++ b/build_tools/l7/larch0/docs/html/larch_sessionsave.html @@ -0,0 +1,191 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + +<html> +<head> +<meta http-equiv="Content-type" content="text/html; charset=utf-8" /> +<title>Saving a session back to the boot device (or even somewhere else)</title> +<!-- (en) Add your meta data here --> + +<link href="css/larchdocs.css" rel="stylesheet" type="text/css"/> +<!--[if lte IE 7]> +<link href="css/yaml/core/iehacks.css" rel="stylesheet" type="text/css" /> +<![endif]--> +</head> + +<body> +<!-- skip link navigation --> +<ul id="skiplinks"> + <li><a class="skip" href="#col1">Skip to main content (Press Enter).</a></li> +</ul> + +<div class="page_margins"> + <div class="page"> + <div id="top"><div id="tm"></div></div> + <!-- begin: #col1 --> + <div id="col1" role="main"> + <div id="col1_content"> + <div id="header" role="banner"> + <h1><span><em>live Arch Linux</em> builder</span></h1> + </div> + + <!-- begin: #col3 navigation column --> + <div id="col3" role="complementary"> + <div id="col3_content"> + <img class="indent2" alt="larch logo" src="css/screen/larch150x.png" width="150" height="150" /> + <div class="vlist"> + <ul> + <li><a href="index.html"><h6>Table Of Contents</h6></a></li> + <li><a href="larch_ssh.html"><h6>Next:</h6> + <div class="indent1">ssh access</div></a></li> + <li><a href="larch_live_system.html"><h6>Previous:</h6> + <div class="indent1">Structure of a larch live system</div></a></li> + </ul> + </div> + </div> + </div> + <!-- end: #col3 --> + +<div class="larchdocs"> +<h2 id="pagetitle" level="1">Saving a session back to the boot device (or even somewhere else)</h2> + +<p>An easy way to create a customized <em>live</em> system is to start from an +existing one, make whatever changes you like, and then save the result back to +the boot device. Of course, for this you need a writeable boot device, e.g. +a USB-stick. +</p> + +<h3><a name="overlays"></a>Overlay archives</h3> + +<p>In <em>larch</em> the uppermost layer in the union file-system is in +<em>tmpfs</em> and can (optionally) be saved at shutdown to the boot medium. +It is <em>compressed</em> using <em>tar</em> and <em>lzop</em> to the file +'overlay.tar.lzo'. When the system next boots this file will then be +unpacked into the initially empty top layer. +</p> + +<p>This is handled primarily by the 'shutdown2' script, supplied in the +'larch-live' package. It is called from a hook function in 'etc/rc.shutdown'. +If the medium is writeable and contains a file 'larch/save', the user is +offered the possibility of saving this overlay archive, thus saving the +current state. +</p> + +<p>When this archive grows too large it will reduce the amount of available +memory, perhaps to an unacceptable extent. +It will also lengthen boot and shutdown times. +To counter this, it is possible to merge the +overlay archive with the middle (<em>squashfs</em>) <em>union</em> layer, +<strong>mods.sqf</strong> (which is normally not copied to memory), +thus restoring the rapid load and save times for <strong>overlay.tar.lzo</strong>, +and maximizing the available memory. I call this process +'overlay merging', and it is offered as a shutdown option. The script +'merge_overlay' (in the 'larch-live' package) provides this facility. +It takes longer to execute than a normal session save, so it should probably +not be used for every session saving operation, but just when the top overlay +gets too big. Note that use of the overlay merging feature creates an +additional layer in the <em>union</em>, 'filter.sqf'. This contains only +'whiteout' files to cover up overwritten data in the underlying 'system.sqf'. +Unlike in previous <em>larch</em> versions the 'mods.sqf' archive contains +no 'whiteouts'. It is hoped that this new structure will cure the +problems experienced in these earlier versions. +</p> + +<h3><a name="var_files"></a>Special places in /var</h3> + +<p>It was considered undesirable to include some things in the '/var' directory +in the session saves, primarily because of the space they occupy. Firstly, +the standard <em>pacman</em> package cache, '/var/cache/pacman/pkg' - if you +do want to save your cache, you should either handle this manually or set +up another location using 'CacheDir' in /etc/pacman.conf'. Also the log files +(in '/var/log') and '/var/tmp' (temporary files, like '/tmp') are not saved. +</p> + +<h3><a name="upd_packages"></a>Updating packages</h3> + +<p>It is possible to perform package addition and removal in the <em>live</em> +system, but one should be aware that packages in the base system are not actually +replaced, just (effectively) hidden, so that the space usage might become a +consideration. Also the handling of kernel updates must be handled in a special +way, because it is stored outside the root file-system, on the boot medium +and needs a separate mechanism to save it at shutdown. It should be fairly +transparent to the user, but under certain circumstances it might be necessary +to bear this in mind. +</p> + +<p>At some point, after extensive updating, it might be desirable to completely +<a href="larch_rebuild.html">rebuild the system</a>, so that also +'system.sqf' is recreated. This will require quite a bit of space, +but should otherwise pose no great problems. +</p> + +<h3><a name="de-Act"></a>Activating and deactivating the session-saving feature</h3> + +<p>As mentioned above, for this feature to be available, there must be a +file with the name 'save' in the boot medium's 'larch' directory. This +will be generated automatically if installing to a partition (i.e. if not +building an <em>iso</em>) and if there is no 'nosave' file in the profile. +The gui provides a button to create and delete this 'nosave' file, +thus disabling or enabling session saving on the created medium. +</p> + +<h3><a name="custom"></a>Customizing the behaviour using scripts</h3> + +<p>Some aspects of the session saving can be customized by writing scripts to +override the default behaviour. These scripts are (in general) kept on the boot +medium, in the 'larch' directory. As these are shell scripts and their use requires +some knowledge of the inner workings of the <em>larch live </em>system, it will +almost certainly be necessary to read the existing <em>larch</em> scripts where the +custom scripts are 'sourced' if you want to +write your own scripts to change the behaviour of the <em>live</em> system in +this respect. All these scripts are found in the 'larch-live' package. +</p> +<ul> + <li><strong>session-save0</strong> + <p>Used in <strong>session-save/shutdown2</strong> (in function 'checkse'). + This script can be used to customize the creation of the new overlay + archive, e.g. by specifying a new location. The default is + 'overlay.tar.lzo' on the boot medium. + </p> + </li> + <li><strong>save-menu</strong> + <p>Used in <strong>session-save/shutdown2</strong> (in function + 'session-save'). This script can be used to further customize the creation + of the new overlay archive, e.g. by providing an alternative session save + menu. Note that if the <strong>session-save0</strong> script specified + an alternative device path for saving the overlay, this script will be + sought in the 'larch' directory on that path. + </p> + </li> + <li><a name="boot-init"></a><strong>boot-init</strong> + <p>In initramfs hook <strong>larch3</strong>. This script allows adjustment of + the overlay handling during the boot process, e.g. getting them from another + path. + Note that the shell environment here is that of the initramfs and thus + very limited. + </p> + </li> +</ul> + +</div> + + + <div class="topref"><a href="#top">Top</a></div> + </div> + <!-- begin: #footer --> + <div id="footer"> + <div id="footer-content" role="contentinfo">© 2010 Michael Towers<br /> + Page layout assisted by <a href="http://www.yaml.de/">YAML</a> and + <a href="http://www.kuwata-lab.com/tenjin/">pyTenjin</a> + </div> + </div> + <!-- end: #footer --> + </div> + <!-- end: #col1 --> + <div id="bottom"><div id="bl"><div id="bm"></div></div></div> + </div> +</div> +<!-- full skiplink functionality in webkit browsers --> +<script src="css/yaml/core/js/webkit-focusfix.js" type="text/javascript"></script> +</body> +</html> diff --git a/build_tools/l7/larch0/docs/html/larch_ssh.html b/build_tools/l7/larch0/docs/html/larch_ssh.html new file mode 100644 index 0000000..85bc9e2 --- /dev/null +++ b/build_tools/l7/larch0/docs/html/larch_ssh.html @@ -0,0 +1,212 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + +<html> +<head> +<meta http-equiv="Content-type" content="text/html; charset=utf-8" /> +<title>ssh access</title> +<!-- (en) Add your meta data here --> + +<link href="css/larchdocs.css" rel="stylesheet" type="text/css"/> +<!--[if lte IE 7]> +<link href="css/yaml/core/iehacks.css" rel="stylesheet" type="text/css" /> +<![endif]--> +</head> + +<body> +<!-- skip link navigation --> +<ul id="skiplinks"> + <li><a class="skip" href="#col1">Skip to main content (Press Enter).</a></li> +</ul> + +<div class="page_margins"> + <div class="page"> + <div id="top"><div id="tm"></div></div> + <!-- begin: #col1 --> + <div id="col1" role="main"> + <div id="col1_content"> + <div id="header" role="banner"> + <h1><span><em>live Arch Linux</em> builder</span></h1> + </div> + + <!-- begin: #col3 navigation column --> + <div id="col3" role="complementary"> + <div id="col3_content"> + <img class="indent2" alt="larch logo" src="css/screen/larch150x.png" width="150" height="150" /> + <div class="vlist"> + <ul> + <li><a href="index.html"><h6>Table Of Contents</h6></a></li> + <li><a href="larch_running.html"><h6>Next:</h6> + <div class="indent1">Running a larch live system</div></a></li> + <li><a href="larch_sessionsave.html"><h6>Previous:</h6> + <div class="indent1">Saving a session back to the boot device (or even somewhere else)</div></a></li> + </ul> + </div> + </div> + </div> + <!-- end: #col3 --> + +<div class="larchdocs"> +<h2 id="pagetitle" level="1">ssh access</h2> + +<p>One feature I wanted in my live system was the ability to +access and control it remotely via <em>ssh</em>. <em>ssh</em> is +generally very useful, but in the case of a <em>live</em> CD (etc.) it +allows operations to be carried out on a remote computer, even one +without keyboard or monitor. Insert the CD, boot up +the computer (assuming it is configured to boot from CD), and log in +via the network using another computer. Isn't <em>Linux</em> great! +</p> + +<p>Well, it doesn't quite work out of the box, though it could be +tweaked so that - in the right environment - it would. Firstly, there +must be a network connection which gets set up automatically - +the easiest is probably <em>DHCP</em> (so long as +you can then find the address of the live system), +but by tweaking <strong>rc.conf</strong> in the <em>profile</em> (or by +using the session saving feature) a static address is also easy to set up. +Secondly you must provide the live system with your public key, so +that you are allowed access (using public key authentication), or else +set a password for the <em>larch</em> root user (probably easiest using the +session saving feature). +</p> + +<h4>id_rsa.pub and authorized_keys</h4> + +<p><strong>id_rsa.pub</strong> +is a public key, and it can be used to allow the user (on the remote machine) +whose key this is to <em>ssh</em> into the live system. +If you leave passwordless logins disabled (the +default), then so long as no root password is set, +the only way in (to the root account) is via public key authentication. +Of course, if you change the root password, anyone (who knows the +password) can log in via <em>ssh</em> +(if the <em>sshd</em> daemon is running). +</p> + +<p>To generate this key for your user (assuming you don't already +have one, in <strong>~/.ssh</strong>) do something like: +</p> + +<pre style="margin-left: 80px;">ssh-keygen -t rsa</pre> + +<p>Use the default destination file and empty passphrase +(normally you wouldn't do that, +but I think it is appropriate in this case). See the <em>ssh</em> man-page +for more information. +</p> + +<p>In order to enable <em>ssh</em> to the root account on the live +system, the contents of this file (a single text line) must be placed in +the <em>larch</em> system's <strong>/root/.ssh/authorized_keys</strong> file. +This file will probably not yet +exist, so the 'id_rsa.pub' can be simply copied to it. +If doing this before building the <em>live</em> system, copy the file to this +position in the 'rootoverlay' directory in the <em>profile</em>, being +careful to get the permissions (644) correct. +To do this in a running <em>larch</em> system, copy the file to this location - +session saving will then preserve it. +</p> + +<p>If you don't need <em>sshd</em> on the live system, you can +remove it from the daemons in <strong>rc.conf</strong>. +</p> + +<h4>/etc/hosts.allow</h4> + +<p> +This must be edited to allow <i>ssh</i> +access to the live system: +</p> + +<pre style="margin-left: 80px;"> +# To allow ssh in from anywhere +sshd: ALL +</pre> + +<p>If that is too radical for you, you might be able to restrict +it somewhat - that depends on your exact circumstances. For example: +</p> + +<pre style="margin-left: 80px;"> +# To allow ssh in from local net (example) +sshd: 192.168.1. +</pre> + +<h3><a name="ssh_hostkeys"></a>ssh host keys</h3> + +<p>The files +<strong>/etc/ssh/ssh_host_dsa_key</strong> +<strong>/etc/ssh/ssh_host_dsa_key.pub</strong>, +<strong>/etc/ssh/ssh_host_rsa_key</strong>, +<strong>/etc/ssh/ssh_host_rsa_key.pub</strong>, +<strong>/etc/ssh/ssh_host_key</strong>, +and +<strong>/etc/ssh/ssh_host_key.pub</strong> +are normally (in a hard-disk based system) generated on the first run of +<strong>/etc/rc.d/sshd</strong>, i.e. during the first boot after a new +installation. This only needs to be done once. However in a <em>live</em> +system changes are generally lost when the system shuts down, so this would +need to be done at every boot, which takes a while, so I prefer to +pregenerate them. +The <em>larch</em> gui offers a checkbox to enable this pregeneration on +the 'larchify' page. +To regenerate these manually (while running the <em>live</em> +system) you can do the following: +</p> + +<pre style="margin-left: 80px;"> +rm /etc/ssh/ssh_host_* +/etc/rc.d/sshd restart +</pre> + +<h3><a name="ssh_x11"></a><em>ssh</em> and <em>X11</em></h3> + +<p> +If you have set up 'X11 Forwarding' (see below), you can run X11 applications on the +<em>live</em> system from your remote system. This is very neat! +</p> + +<h4>/etc/ssh/sshd_config</h4> + +<p>This file is changed to allow X applications to run on the +<em>live</em> system but display on another: +</p> + +<pre style="margin-left: 80px;">X11Forwarding yes</pre> + +<p> +This will only work if you use the -Y option to <em>ssh</em> +on the system from which you log in, and on which +you want to display the X windows (e.g. 'ssh -Y +root@192.168.0.201'). Alternatively you can put the +following in <em>its</em> <strong>etc/ssh/ssh_config</strong>: +</p> + +<pre style="margin-left: 80px;"> +ForwardX11 yes +ForwardX11Trusted yes +</pre> + +</div> + + + <div class="topref"><a href="#top">Top</a></div> + </div> + <!-- begin: #footer --> + <div id="footer"> + <div id="footer-content" role="contentinfo">© 2010 Michael Towers<br /> + Page layout assisted by <a href="http://www.yaml.de/">YAML</a> and + <a href="http://www.kuwata-lab.com/tenjin/">pyTenjin</a> + </div> + </div> + <!-- end: #footer --> + </div> + <!-- end: #col1 --> + <div id="bottom"><div id="bl"><div id="bm"></div></div></div> + </div> +</div> +<!-- full skiplink functionality in webkit browsers --> +<script src="css/yaml/core/js/webkit-focusfix.js" type="text/javascript"></script> +</body> +</html> diff --git a/build_tools/l7/larch0/docs/html/larchify.html b/build_tools/l7/larch0/docs/html/larchify.html new file mode 100644 index 0000000..3c44db1 --- /dev/null +++ b/build_tools/l7/larch0/docs/html/larchify.html @@ -0,0 +1,151 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + +<html> +<head> +<meta http-equiv="Content-type" content="text/html; charset=utf-8" /> +<title>Building the live system</title> +<!-- (en) Add your meta data here --> + +<link href="css/larchdocs.css" rel="stylesheet" type="text/css"/> +<!--[if lte IE 7]> +<link href="css/yaml/core/iehacks.css" rel="stylesheet" type="text/css" /> +<![endif]--> +</head> + +<body> +<!-- skip link navigation --> +<ul id="skiplinks"> + <li><a class="skip" href="#col1">Skip to main content (Press Enter).</a></li> +</ul> + +<div class="page_margins"> + <div class="page"> + <div id="top"><div id="tm"></div></div> + <!-- begin: #col1 --> + <div id="col1" role="main"> + <div id="col1_content"> + <div id="header" role="banner"> + <h1><span><em>live Arch Linux</em> builder</span></h1> + </div> + + <!-- begin: #col3 navigation column --> + <div id="col3" role="complementary"> + <div id="col3_content"> + <img class="indent2" alt="larch logo" src="css/screen/larch150x.png" width="150" height="150" /> + <div class="vlist"> + <ul> + <li><a href="index.html"><h6>Table Of Contents</h6></a></li> + <li><a href="medium.html"><h6>Next:</h6> + <div class="indent1">Preparing the larch live medium</div></a></li> + <li><a href="archin.html"><h6>Previous:</h6> + <div class="indent1">Installation of the base Arch system</div></a></li> + </ul> + </div> + </div> + </div> + <!-- end: #col3 --> + +<div class="larchdocs"> +<h2 id="pagetitle" level="1">Building the <em>live</em> system</h2> + + +<p>Once we have an <em>Arch Linux</em> installation and have specified our +customizations in the profile, we can combine all this information into two +squashfs archives and an <em>initramfs</em> (to allow the <em>live</em> system +to boot). Let's call this step 'larchification' (from the verb 'larchify'). +The lowest layer in the <em>aufs</em> mount is the raw installation, +which is compressed into a <em>squashfs</em> archive, 'system.sqf'. +All the modifications specified in the profile, as well, as some +common to all <em>larch</em> systems are in the archive 'mods.sqf', which +'overlays' the basic installation. +</p> + +<p>For details of the structure of the <em>live</em> system which is built +by this stage see <a href="larch_live_system.html">this page</a>. +The bulk of the code in the <em>larchify</em> script is concerned with +building the 'mods.sqf' overlay, and a description of the main possibilities +for customizing the build process are covered in +<a href="profiles.html">the profiles documentation</a>. +</p> + +<h3><a name="mkinitcpio"></a><em>mkinitcpio</em> and the <em>initramfs</em></h3> + +<p>In order to build a suitable <em>initramfs</em> for a <em>larch</em> +system, a customized version of 'mkinitcpio.conf' is required. How +<em>larch</em> handles this is quite complicated because it aims to retain +the normal files so that the <em>live</em> system can later be installed +as a normal <em>Arch Linux</em> system, whilst at the same time offering +the capability of updating (with 'pacman -Syu') the <em>live</em> system, +including the kernel (thus requiring regeneration of the <em>initramfs</em> +for the system). +The consequence of this ambition is that modifications are made +within '/etc/mkinitcpio.d' (which are reversible when the <em>live</em> +system is installed as normal <em>Arch Linux</em> system) and a special +<em>mkinitcpio</em>' configuration file, '/etc/mkinitcpio.conf.larch' +is generated automatically (and thus should not be +touched by human hands!) from '/etc/mkinitcpio.conf.larch0'. +If you need to know more see the method 'Builder.gen_initramfs' in +'cli/larchify.py'. +</p> + +<h3><a name="reuseSystem"></a>Rebuilding using an existing 'system.sqf'</h3> + +<p>In order to aid experimentation with profile tweaks which do not affect +the underlying installation, it is possible to repeat the 'larchify' step +without rebuilding the 'system.sqf' archive, which saves quite a bit of time +(this is achieved by passing the '-o' option to 'larch-larchify' when running +from the command line). +</p> + +<h3><a name="existingSystem"></a>Making a <em>live</em> system from an +existing <em>Arch</em> installation</h3> + +<p>By setting the installation path (with the '-i' option if using the +command line) to an existing <em>Arch</em> installation, +a <em>live</em> medium can be made from it. +The installation must already be mounted, including any sub-mounts +(e.g. /home on another partition). The main mount must be with +options 'exec,dev', because most of the building is done via a <em>chroot</em> +to the installation. This approach to <em>live</em> system generation is +probably not a good idea if the installation contains a lot of data - +consider how big the result will be ... +</p> + +<p>Also the currently running (<em>Arch</em> only!) system can be +<em>larchified</em>, by setting the installation path to '/'. +This is, however, not recommended. Building from a running system can easily +result in data corruption because the file-system might well change during +the build process. +</p> + +<p>Note that some things in '/var' will not be included in the 'live' system. +Firstly, the standard <em>pacman</em> package cache ('/var/cache/pacman/pkg') +will be excluded. +Also the log files (in '/var/log') and '/var/tmp' (temporary files, like '/tmp') +are not saved. As some files in '/var/log' are required for certain aspects of +logging to function, these are recreated in the <em>initramfs</em>. +</p> + +</div> + + + <div class="topref"><a href="#top">Top</a></div> + </div> + <!-- begin: #footer --> + <div id="footer"> + <div id="footer-content" role="contentinfo">© 2010 Michael Towers<br /> + Page layout assisted by <a href="http://www.yaml.de/">YAML</a> and + <a href="http://www.kuwata-lab.com/tenjin/">pyTenjin</a> + </div> + </div> + <!-- end: #footer --> + </div> + <!-- end: #col1 --> + <div id="bottom"><div id="bl"><div id="bm"></div></div></div> + </div> +</div> +<!-- full skiplink functionality in webkit browsers --> +<script src="css/yaml/core/js/webkit-focusfix.js" type="text/javascript"></script> +</body> +</html> diff --git a/build_tools/l7/larch0/docs/html/medium.html b/build_tools/l7/larch0/docs/html/medium.html new file mode 100644 index 0000000..01b0fec --- /dev/null +++ b/build_tools/l7/larch0/docs/html/medium.html @@ -0,0 +1,142 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + +<html> +<head> +<meta http-equiv="Content-type" content="text/html; charset=utf-8" /> +<title>Preparing the larch live medium</title> +<!-- (en) Add your meta data here --> + +<link href="css/larchdocs.css" rel="stylesheet" type="text/css"/> +<!--[if lte IE 7]> +<link href="css/yaml/core/iehacks.css" rel="stylesheet" type="text/css" /> +<![endif]--> +</head> + +<body> +<!-- skip link navigation --> +<ul id="skiplinks"> + <li><a class="skip" href="#col1">Skip to main content (Press Enter).</a></li> +</ul> + +<div class="page_margins"> + <div class="page"> + <div id="top"><div id="tm"></div></div> + <!-- begin: #col1 --> + <div id="col1" role="main"> + <div id="col1_content"> + <div id="header" role="banner"> + <h1><span><em>live Arch Linux</em> builder</span></h1> + </div> + + <!-- begin: #col3 navigation column --> + <div id="col3" role="complementary"> + <div id="col3_content"> + <img class="indent2" alt="larch logo" src="css/screen/larch150x.png" width="150" height="150" /> + <div class="vlist"> + <ul> + <li><a href="index.html"><h6>Table Of Contents</h6></a></li> + <li><a href="profiles.html"><h6>Next:</h6> + <div class="indent1">Profiles</div></a></li> + <li><a href="larchify.html"><h6>Previous:</h6> + <div class="indent1">Building the live system</div></a></li> + </ul> + </div> + </div> + </div> + <!-- end: #col3 --> + +<div class="larchdocs"> +<h2 id="pagetitle" level="1">Preparing the <em>larch live</em> medium</h2> + + +<p>The building blocks for the preparation of a <em>live</em> medium are +produced by the 'larchification' process: the two <em>squashfs</em> +archives, 'system.sqf' and 'mods.sqf', and the 'boot' directory, +containing the kernel and <em>initramfs</em>. +</p> + +<p>This stage adds the bootloader files and user-defined customizations +which are directly copied to the medium rather than being included in +the <em>squashed</em> archives. The result is written to an +<strong>iso</strong> file (for writing to CD/DVD) or directly to a +partition on a disk(-like) device, such as a USB stick. +See the <a href="profiles.html#cd-root">cd-root</a> section in the +profiles documentation for details on how to customize this data. +</p> + +<p>It is also possible to use an existing <em>larch</em> medium as input +in order to copy the system to a different medium, potentially also +changing the bootloader (only possible if the <em>live</em> system +was built with support for the new bootloader). +</p> + +<p>The command line script for building an <em>iso</em> is +<strong>larch-live_iso</strong>. Run 'larch-live_iso -h' to get a +usage message. +</p> + +<p>The command line script for installing to a partition is +<strong>larch-live_part</strong>. Run 'larch-live_part -h' to get a +usage message. +When the <em>live</em> system is installed to a partition (e.g. +USB-stick) it is possible to choose how the boot partition will be +recognized. +The options available are via UUID, partition label, partition path +(e.g. '/dev/sdb1'), or by searching for a partition +containing the file 'larch/larchboot'. See also +<a href="larch_running.html#bootparm">'Boot parameters'</a>. +</p> + +<p>The 'bootlines' file allows the boot options to be specified in a +manner independent of which bootloader is used. The default version +is supplied in the 'larch' package (in the 'data' directory), but this +will be overridden by a version supplied in the profile. The unprocessed +version is also saved in the 'boot' directory of the created medium, to +allow later copying of the medium with a different bootloader. +</p> + +<p>It is possible to repeat the installation onto various media, changing +the configuration, without needing to rerun the 'larchification' stage. +The constituent <em>larch</em> files remain unchanged. +</p> + +<h3><a name="usb2bootiso"></a>Building a boot CD for a USB-stick</h3> + +<p>Older computers may not be able to boot from USB devices, so the +possibility of generating a small <em>boot iso</em> is provided. This can +be burned to CD and can be used to boot your <em>larch</em> system on a +USB-stick. On the command line this is managed by the +<strong>larch-boot_iso</strong> script. +As this function uses the system on the USB-stick, this needs to be +plugged in (not mounted!) and selected in the 'Partition' entry. +</p> + +<p>As the kernel and <em>initramfs</em> are now taken from the CD rather +than from the USB device, an update of the kernel using the session saving +feature will not work in this case (the boot directory of the USB device +would be updated, not that of the CD). +</p> + +</div> + + + <div class="topref"><a href="#top">Top</a></div> + </div> + <!-- begin: #footer --> + <div id="footer"> + <div id="footer-content" role="contentinfo">© 2010 Michael Towers<br /> + Page layout assisted by <a href="http://www.yaml.de/">YAML</a> and + <a href="http://www.kuwata-lab.com/tenjin/">pyTenjin</a> + </div> + </div> + <!-- end: #footer --> + </div> + <!-- end: #col1 --> + <div id="bottom"><div id="bl"><div id="bm"></div></div></div> + </div> +</div> +<!-- full skiplink functionality in webkit browsers --> +<script src="css/yaml/core/js/webkit-focusfix.js" type="text/javascript"></script> +</body> +</html> diff --git a/build_tools/l7/larch0/docs/html/profiles.html b/build_tools/l7/larch0/docs/html/profiles.html new file mode 100644 index 0000000..a4c4a22 --- /dev/null +++ b/build_tools/l7/larch0/docs/html/profiles.html @@ -0,0 +1,326 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + +<html> +<head> +<meta http-equiv="Content-type" content="text/html; charset=utf-8" /> +<title>Profiles</title> +<!-- (en) Add your meta data here --> + +<link href="css/larchdocs.css" rel="stylesheet" type="text/css"/> +<!--[if lte IE 7]> +<link href="css/yaml/core/iehacks.css" rel="stylesheet" type="text/css" /> +<![endif]--> +</head> + +<body> +<!-- skip link navigation --> +<ul id="skiplinks"> + <li><a class="skip" href="#col1">Skip to main content (Press Enter).</a></li> +</ul> + +<div class="page_margins"> + <div class="page"> + <div id="top"><div id="tm"></div></div> + <!-- begin: #col1 --> + <div id="col1" role="main"> + <div id="col1_content"> + <div id="header" role="banner"> + <h1><span><em>live Arch Linux</em> builder</span></h1> + </div> + + <!-- begin: #col3 navigation column --> + <div id="col3" role="complementary"> + <div id="col3_content"> + <img class="indent2" alt="larch logo" src="css/screen/larch150x.png" width="150" height="150" /> + <div class="vlist"> + <ul> + <li><a href="index.html"><h6>Table Of Contents</h6></a></li> + <li><a href="larch_live_system.html"><h6>Next:</h6> + <div class="indent1">Structure of a larch live system</div></a></li> + <li><a href="medium.html"><h6>Previous:</h6> + <div class="indent1">Preparing the larch live medium</div></a></li> + </ul> + </div> + </div> + </div> + <!-- end: #col3 --> + +<div class="larchdocs"> +<h2 id="pagetitle" level="1">Profiles</h2> + +<p>This feature of the <em>larch</em> build system allows bundling +all the configuration information for a particular <em>live</em> system +'design' into a single directory, a <em>larch profile</em>, and the +name of the profile is the directory's name. This directory includes +the list of packages to be installed, locale information and the +particular tweaks and additions needed +to customize the system, in particular a subdirectory containing the +'overlay' files - those files which have been changed from their initial +fresh state after installation and those which have simply been added. +</p> + +<p>Note that of all the profile files and directories mentioned here +only 'addedpacks' is not optional. +</p> + +<h3><a name="overlay"></a>The overlay directory</h3> + +<p>One of the simplest features of the profile is perhaps the +'<em>rootoverlay</em>' subdirectory: +everything in this directory is copied directly to the +<em>live</em> system's overlay, so that the a file 'a/b/c' within this +directory will appear at '/a/b/c' in the <em>live</em> system, regardless +of whether this file previously existed. Note however that all ownerships +are changed to 'root:root'. The bulk of the customizations for the +<em>live</em> system would normally be placed in this directory. +</p> + +<p>It would be possible to make the desired alterations directly to the +base system, and there are situations in which one would pretty well +have to do it this way (for example if a modified or added file was to +have some ownership other than 'root:root'). But another advantage (apart +from the encapsulation of the customizations in the profile directory) of +keeping the modifications in a separate directory is that the base +installation can be kept 'clean' and thus it is easily reusable. +</p> + +<p>If you would like to have a look at a profile, look in the 'profiles' +directory in the 'larch-profiles' package (if you have downloaded +<em>larch</em> by means of the 'larch-setup' script that will be +'larch0/profiles'). Each of its subdirectories is a profile. +If you want to make your own profile, it is probably easiest to start with +one of the examples. Copy one of these directories to your working directory +and rename it (to avoid confusion). +</p> + +<h3><a name="cd-root"></a>The <strong>cd-root</strong> directory</h3> + +<p>This directory contains files that will be (more or less) directly copied +to the <em>larch</em> medium, partly dependent on the available bootloaders. +</p> + +<p>Bootloader independent files are provided in the 'larch' package at +'cd-root/boot0'. Individual files can be added or substituted by +supplying them in the <em>profile</em> at <strong>cd-root/boot</strong>. +It is also possible to completely replace the basic boot directory by +having <strong>cd-root/boot0</strong> in +the profile - then the default version will not be used. These files are +copied to the 'boot' directory of the bootable medium. +</p> + +<p>There are also directories for bootloader dependent files. These are only +copied over if the <em>live</em> system has support for the corresponding +bootloader (i.e. if the corresponding packages - 'grub' and 'syslinux' - are +installed). These end up as subdirectories of the medium's 'boot' directory, +'boot/grub', 'boot/syslinux' or 'boot/isolinux', and work in a similar way to +the 'boot(0)' directories. <em>larch</em> provides default versions of these +directories in 'cd-root/grub0' and 'cd-root/isolinux0'. To extend these, or +replace individual files, place your changes in the directories +<strong>cd-root/grub</strong> and <strong>cd-root/isolinux</strong> in the +<em>profile</em> directory, if +you want to completely replace these directories, supply your versions in +<strong>cd-root/grub0</strong> and <strong>cd-root/isolinux0</strong> in the +profile directory. +</p> + +<p>The contents of the directory <strong>cd-root/larch/copy</strong> will +appear in '/larch/copy' on the medium. During booting the <em>larch live</em> +system will copy the contents of this directory to the <em>tmpfs</em> base +directory ('/.livesys'). This feature is not +used by the <em>larch</em> system itself, but it can be used in various +ways by the <em>live</em> system - the example profiles use it to some +extent, for controlling autologin and for data required for installation +as a normal <em>Arch</em> system (information on features specific to a +<em>live</em> system which should be stripped out if a normal installation +is performed). +</p> + +<p>The contents of the directory <strong>cd-root/larch/extra</strong> will +appear in 'larch/extra' on the medium but are otherwise unconnected with any +<em>larch</em> functionality. <em>Live</em> system designers can use this +in any way they like. +</p> + +<h3><a name="other-files"></a>Other important files within a profile</h3> + +<ul> + <li><strong>addedpacks</strong> - This is the only compulsory file in + the profile (it must even be present if you are not using the + installation stage, but it can be empty in that case). It contains + a list of packages and package groups to be installed to the 'base' + system. Here you can enter all the applications + you would like in your <em>live</em> CD/USB system (and subsequently + installed to a hard disk partition, if that was your intention). + Thanks to <em>pacman</em> you don't need to sort out dependencies, + these should all be included automatically. See + <a href="archin.html#package_selection">here</a> for details. + </li> + <li><strong>vetopacks</strong> - Allows 'vetoing' of packages included + indirectly in the installation list from 'addedpacks'. See + <a href="archin.html#package_selection">here</a> for details. + </li> + <li><strong>pacman.conf.repos</strong> - Set the repository part of + 'pacman.conf' for the <em>live</em> system, and possibly also for + installation of the base system (See + <a href="archin.html#pacman_conf">here</a> for further details). + The default version will be adequate for many situations, but you + will need to supply this file if you use the 'testing' repository, + for example. + </li> + <li><strong>pacman.conf.options</strong> - Set the options part of + 'pacman.conf' for the <em>live</em> system and for + installation of the base system (See + <a href="archin.html#pacman_conf">here</a> for further details). + This will generally not be needed as the default version will be + adequate for most purposes. + </li> + <li><strong>bootlines</strong> - This file contains bootloader independent + boot lines, so that the same file can be used for grub and isolinux/syslinux. + The gui provides a button to edit this file. + To get an idea of what should be in here look at the default version (in + the 'larch' package, 'data' directory), or just click on the edit button. + </li> + + <li><strong>rootoverlay/etc/rc.conf</strong> - As a major point of + configuration in an <em>Arch</em> system this is important enough + to get a button in the <em>larch</em> gui to edit it. + </li> + + <li><strong>rootoverlay/etc/locale.gen</strong> - For convenience, the + <em>larch</em> gui provides a button to edit this file, which determines + which glibc locales are supported in the <em>live</em> system. The + corresponding files are generated (to the overlay) by the 'larchify' + script, which has an option (for experts only) to reuse the locale + files from a previous run (in order to reduce generation time in + cases where the locales are unchanged). + </li> + + <li><strong>rootoverlay/etc/mkinitcpio.conf.larch0</strong> - Again for + convenience, the <em>larch</em> gui provides a button to edit this file, + which allows you to tweak the initramfs. This is a special version of + '/etc/mkinitcpio.conf' which is used to generate the initramfs for the + <em>larch live</em> system. The default version is supplied as + '/etc/mkinitcpio.conf.larch0' in the 'larch-live' package. Whatever else + you change, don't change the larch hooks. + </li> + + <li><strong>rootoverlay/etc/inittab.larch</strong> - If this file is + present it will cause the original /etc/inittab to be saved with a + '.larchsave' suffix, and this new version will be used for the + <em>live</em> 'inittab'. This allows a special version of this file to + be used just for the <em>live</em> system, an installer + can replace it by the original during the installation process. + </li> + + <li><strong>users</strong> - It is possible to add user accounts to the + system during building. See below. + </li> + + <li><strong>skel_*</strong> (directory) - Customized '/etc/skel' substitutes + for use at build time only. See below. + </li> + + <li><strong>vetodirs</strong> - Do not use this unless you really know what + you are doing. Each directory listed in this file (one entry per line, + comment lines start with '#') will be excluded from the live system. The + directories are relative to the installation root. + </li> + + <li><strong>build-tweak</strong> - Do not use this unless you really know + what you are doing. It is a program (script) - so it must be executable - + to customize the construction of the overlay (to a certain extent). It gets + two arguments on the command line: the path to the installation being + larchified, and the (full) path to the directory in which the overlay is + being constructed. It is called just before 'mods.sqf' is squashed, but + also before users are added. + </li> + + <li><strong>nosave</strong> - The existence of this file will suppress the + generation of the file 'larch/save' on a writable medium (unless overridden + by an option to the medium generation script). It is also copied to + 'larch/nosave' on the medium (also on non-writable media), so that this + message is available later, e.g. when copying the medium. + </li> + +</ul> + +<h3><a name="users"></a>Adding user accounts</h3> + +<p> +The construction details should be provided in the 'users' file in the +profile directory. It is an 'ini'-style configuration file, the sections +being the user names. Here is an example: +<pre>[DEFAULT] +pw = +expert = +skel = +maingroup = +uid = +xgroups = video,audio,optical,storage,scanner,power,camera + +[u1] +uid = 999 +skel = + +[u2] +pw = p1 +expert = +skel = +maingroup = +uid = +xgroups = video,audio,optical,storage +</pre> +The 'DEFAULT' section is not necessary, but is generated automatically +by the gui user-table editor. Only entries which differ from the default +values need be present. +</p> +<p>The default primary group is defined by settings in '/etc/login.defs' +and '/etc/default/useradd' ('USERGROUPS_ENAB yes' in 'etc/login.defs' +causes this to be a group with the same name as the user). You can +override this by adding an 'expert' option, or by placing modified versions +of these files in the profile's 'rootoverlay' directory. +</p> +<p>The additional groups should be comma-separated and without spaces. +</p> +<p>If no 'skel'-file is specified, the default ('/etc/skel') is used, including +anything in the overlay. To use a custom 'skel'-file, place the directory +in the profile, giving it a name starting with 'skel_', and place the rest of +the name (the part after '_') in the configuration line. +</p> +<p>A password can be set for the new user by entering this (plain text - +I'm guessing this is alright in this situation ...). An empty password +field will allow passwordless logins (at least on the console). +</p> +<p>By default the UID number will be chosen automatically, but a specific +number may be entered here. In <em>Arch Linux</em> the UIDs normally start +at 1000. +</p> +<p>Users are added by means of 'useradd', so anything placed in the 'expert' +field should be a valid option to that command. If a user-name already exists +in the system to be larchified, it will be ignored (it does not count as +an error). +</p> + +</div> + + + <div class="topref"><a href="#top">Top</a></div> + </div> + <!-- begin: #footer --> + <div id="footer"> + <div id="footer-content" role="contentinfo">© 2010 Michael Towers<br /> + Page layout assisted by <a href="http://www.yaml.de/">YAML</a> and + <a href="http://www.kuwata-lab.com/tenjin/">pyTenjin</a> + </div> + </div> + <!-- end: #footer --> + </div> + <!-- end: #col1 --> + <div id="bottom"><div id="bl"><div id="bm"></div></div></div> + </div> +</div> +<!-- full skiplink functionality in webkit browsers --> +<script src="css/yaml/core/js/webkit-focusfix.js" type="text/javascript"></script> +</body> +</html> diff --git a/build_tools/l7/larch0/gui/MEDIUM_README b/build_tools/l7/larch0/gui/MEDIUM_README new file mode 100644 index 0000000..ede0975 --- /dev/null +++ b/build_tools/l7/larch0/gui/MEDIUM_README @@ -0,0 +1,14 @@ +Medium building + +In the cli, when -S--source is passed, no chroot is used for building unless +explicitly requested via the -C/--chroot option. When no -S--source is passed, +chroot will be used unless the -c/--nochroot option is passed. + +In the gui the default source is the medium directory within the installation +dir (as built by the previous stages). +If this is selected chroot commands will be used for the +medium building unless explicitly overridden (uncheck the chroot CheckBox). +If another source is selected chroot commands will only be used if explicitly +requested (check the chroot CheckBox). The chroot dir would be the project's +installation dir (so if this is '/' chroot is never available). + diff --git a/build_tools/l7/larch0/gui/askpass.py b/build_tools/l7/larch0/gui/askpass.py new file mode 100755 index 0000000..ac65325 --- /dev/null +++ b/build_tools/l7/larch0/gui/askpass.py @@ -0,0 +1,35 @@ +#!/usr/bin/env python +# +""" +# One possibility: +from PyQt4 import QtGui + +app = QtGui.QApplication([]) +result, ok = QtGui.QInputDialog.getText(None, "sudo", + "Please enter the password to run as administrator", + QtGui.QLineEdit.Password) + + +print result +#exit(0 if ok else 1) +""" + +# This version connects via a socket to the main application +import socket +import sys + +port = '\0larch-sudopw' +data = 'pw-get' + +# Create a socket (SOCK_STREAM means a TCP socket) +sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + +# Connect to server and send data +sock.connect(port) +sock.send(data + '\n') + +# Receive data from the server and shut down +received = sock.recv(1024) +sock.close() + +print received diff --git a/build_tools/l7/larch0/gui/controller.py b/build_tools/l7/larch0/gui/controller.py new file mode 100644 index 0000000..2025301 --- /dev/null +++ b/build_tools/l7/larch0/gui/controller.py @@ -0,0 +1,466 @@ +#!/usr/bin/env python +# +# controller.py - Manages file-system access and calling of larch scripts +# +# (c) Copyright 2010 Michael Towers (larch42 at googlemail dot com) +# +# This file is part of the larch project. +# +# larch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# larch is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with larch; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#---------------------------------------------------------------------------- +#2010.07.19 + +import sys, os, pwd, traceback, __builtin__ +try: + import json as serialize +except: + import simplejson as serialize +from subprocess import Popen, PIPE, call +import threading +import re +import SocketServer + +from config import * +start_translator(switchC=False) + + +exports = {} +def add_exports(elist): + for key, method in elist: + exports[key] = method + +__builtin__.add_exports = add_exports + + +def error0(message): + sys.stderr.write('>>ERROR>>' + message + '\n') + sys.stderr.flush() +__builtin__.error0 = error0 + + +class Fs: + """Collect file system access methods in one class. + """ + def __init__(self): + add_exports( ( + ('fetch_layout', self.fetch_layout), + ('isfile', self.isfile), + ('isdir', self.isdir), + ('rm_rf', self.rm_rf), + ('get_partitions', self.get_partitions), + ('readfile', self.readfile), + ('savefile', self.savefile), + ('get_docs_url', self.get_docs_url), + ('oldsqf', self.oldsqf), + ('oldlocales', self.oldlocales), +# ('getpath', self.getpath), + ('browse', self.browse)) + ) + + def fetch_layout(self, layout_file): + fh = open(base_dir + '/gui/layouts/' + layout_file) + r = fh.read() + fh.close() + return (True, eval(r)) + + def rm_rf(self, path): + call(['rm', '-rf', self._getpath(path)]) + return (True, None) + + +# def exists(self, path): +# return os.path.exists(self._getpath(path)) + +# def copy(self, src, dst): +# shutil.copytree(self._getpath(src), self._getpath(dst)) + + + def oldsqf(self): + return (True, + os.path.isfile(self._getpath('install:' + CHROOT_SYSTEMSQF)) + or os.path.isfile(self._getpath('install:' + CHROOT_DIR_MEDIUM + + '/larch/system.sqf'))) + + def oldlocales(self): + return (True, os.path.isdir(self._getpath('install:%s/locale' + % CHROOT_DIR_BUILD))) + + def isfile(self, path): + return (True, os.path.isfile(self._getpath(path))) + + def isdir(self, path): + return (True, os.path.isdir(self._getpath(path))) + + + def browse(self, path): + fpath = self._getpath(path) + if call(['mkdir', '-p', fpath]) == 0: + # Start file browser at fpath + call(project_manager.appget('filebrowser').replace('$', fpath) + + ' &', shell=True) + return (True, None) + else: + return (False, None) + + +# def makedirs(self, path): +# os.makedirs(self._getpath(path)) +# return (True, None) + + def readfile(self, f): + f = self._getpath(f) + try: + fh = open(f) + r = fh.read() + fh.close() + return (True, r) + except: + return (False, _("Couldn't read file '%s'") % f) + + def savefile(self, f, d): + f = self._getpath(f) + dir = os.path.dirname(f) + if not os.path.isdir(dir): + os.makedirs(dir) + try: + fh = open(f, "w") + fh.write(d) + fh.close() + return (True, None) + except: + return (False, _("Couldn't save file '%s'") % f) + + def _getpath(self, f): + if f[0] != "/": + base, f = f.split(':') + f = '/' + f + if base == 'base': + f = base_dir + f + elif base == 'profile': + f = project_manager.profile_path + f + elif base == 'working': + f = project_manager.project_dir + f + else: + f = project_manager.get_ipath()[1] + f + return f + + def get_docs_url(self, page): + if lang and (len(lang) > 1): + p = base_dir + ('/docs/%s/html/' % lang[0:2]) + page + if os.path.isfile(p): + return (True, p) + return (True, base_dir + '/docs/html/' + page) + + + def get_partitions(self): + """Get a list of available partitions (only unmounted ones + are included). + """ + # First get a list of mounted devices + mounteds = [] + fh = open('/etc/mtab') + for l in fh: + dev = l.split()[0] + if dev.startswith('/dev/sd'): + mounteds.append(dev[5:]) + fh.close() + # Get a list of partitions + partlist = [] + fh = open('/proc/partitions') + for l in fh: + fields = l.split() + if len(fields) == 4: + dev = fields[3] + if dev.startswith('sd') and (dev[-1] in '0123456789'): + size = (int(fields[2]) + 512) / 1024 + if (size > 200) and (dev not in mounteds): + # Keep a tuple (partition, size in MiB) + partlist.append("%-12s %12s MiB" + % ('/dev/' + dev, size)) + fh.close() + return (True, partlist) + + + +class LarchScripts: + """This class deals with calling the larch scripts. + As they must be run as root a separate dispatcher process, running as + root, is used to call the actual scripts. The dispatcher is started + using 'sudo'. + A call will be initiated from the gui, and is sent to the dispatcher, + which starts the process and returns the output when it is available. + If the script is interactive, it might also require input, which can be + passed via the dispatcher. + While reading output from the dispatcher the gui must remain responsive, + so that the view can be switched and the subprocess aborted, if desired. + To achieve this a separate thread is used for reading input from the + dispatcher, together with a mechanism for activating a handler in a + thread-safe way, 'ui.idle_add'. + """ + def __init__(self): + self.larch_dispatcher = None # dispatcher subprocess + self.progress_waiting = None # used by progress widget + + + def call(self, cmd, arg=[], atend=None): + self.cmd = cmd + self.arg = arg + # Callback on completion: + self.atend = atend # returns True for automatic return to normal view + if self.larch_dispatcher: + self.runcmd() + + else: + # Start a socket server to handle password requests + # Use a unix domain server in the abstract namespace + port = '\0larch-sudopw' + # Create the server + self.sserver = SocketServer.UnixStreamServer(port, MyHandler) + self.sst = threading.Thread(target=self.sserver.serve_forever, + args=()) + self.sst.start() + # Handle one request + #self.sserver.handle_request() + + # Start the larch dispatcher script + os.environ['SUDO_ASKPASS'] = base_dir + '/gui/askpass.py' + self._sudo_wait() + dispatcher = Popen(['sudo', '-A', '-k', + base_dir + '/gui/dispatcher.py'], + stdin=PIPE, + stdout=PIPE, + stderr=PIPE) + + # And a thread to read its output + self.istream = dispatcher.stdin + self.estream = dispatcher.stderr + self.t = threading.Thread(target=self.readinput, args=(dispatcher,)) + self.t.start() + + + def runcmd(self): + progress.start() # initialize progress widget + ui.runningtab(1) # switch view to progress widget + # Run command: + cx = '%s %s:%s\n' % (self.cmd, project_manager.project_dir, + serialize.dumps(self.arg)) + logger.addLine('++' + cx) + self.istream.write(cx) + self.istream.flush() + r = self.geterr() + if r: + ui.command('infoDialog', r, 'BUG') + + + def geterr(self): + r = "" + while True: + rx = self.estream.readline() + if rx: + rx = rx.strip() + else: + break + if rx == '!+': + break + if r: + r +='\n' + r += rx + return r + + + def readinput(self, dispatcher): + ostream = dispatcher.stdout + while True: + line = ostream.readline() + if not line: + break + id, line = line.rstrip().split(':', 1) + try: + if line[0] == '=': + self._stop_server() + # The dispatcher has just started, make it available + self.larch_dispatcher = dispatcher + # Reenable the gui, and queue the command + ui.idle_add(self._dispatcher_started, self.runcmd) + continue + elif line[0] != '/': + line = serialize.loads(line) + except: + line = '[[%s]]' % line + ui.idle_add(self.addline, line) # cross-thread call + + if self.larch_dispatcher == None: + self._stop_server() + ui.idle_add(self._dispatcher_started, None) + + + + def _sudo_wait(self): + ui.command(':larch.busy', [':larch'], True) + + + def _dispatcher_started(self, cmd): + if cmd: + cmd() + else: + ui.command('infoDialog', + ("%s:\n %s" % (ui.data('authfail'), self.geterr())), + 'sudo') + ui.command(':larch.busy', [':larch'], False) + + + def _stop_server(self): + # Stop the password socket-server + self.sserver.shutdown() + self.sserver = None + + + def close(self): + if self.larch_dispatcher: + self.istream.write('quit\n') + self.istream.flush() + self.larch_dispatcher.wait() + + + def interrupt(self): + logger.addLine('--Terminate--') + self.istream.write('kill\n') + self.istream.flush() + + + def addline(self, message): + """A line has been received from the script. + This must be handled in the main thread. + The input lines are filtered for pacman, mksquashfs and mkisofs + progress output so that appropriate progress reports can be given. + """ + if 'pacman:' in message: + progress.set(message[2:]) + if message.endswith('|100'): + progress.set() + message = message.rsplit('|', 1)[0].rstrip() + else: + return + + if 'mksquashfs:' in message: + progress.set(message[2:]) + self.progress_waiting = message + return + + if 'mkisofs:' in message: + progress.set(message[2:]) + self.progress_waiting = ">_mkisofs: completed" + return + + if self.progress_waiting: + progress.set() + progress.addLine(self.progress_waiting) + self.progress_waiting = None + + progress.addLine(message) + if message[0] == '/': + # process finished: + auto = False + if self.atend: + auto = self.atend(int(message[1:])) + progress.end(auto) + self.cmd = None + elif message.startswith('?>'): + # a query (yes/no) + # Pop up the query + reply = '??YES' if ui.command('confirmDialog', + message[2:], self.cmd) else '??NO' + self.istream.write(reply + '\n') + self.istream.flush() + + + def archin(self, cmd, installrepos): + args = ['-p', project_manager.profile_path, + '-i', project_manager.get_ipath()[1], + '-c', project_manager.get('pacman_cache')] + rf = project_manager.project_dir + '/pacman.conf.repos' + if installrepos and os.path.isfile(rf): + args += ['-r', rf] + self.call('archin', args + cmd.split()) + + + def larchify(self, oldsyssqf, oldlocales): + args = ['-p', project_manager.profile_path, + '-i', project_manager.get_ipath()[1],] + if oldsyssqf: + args.append('-o') + if oldlocales: + args.append('-l') + self.call('larchify', args) + + + def testmedium(self, path, atend): + self.call('live_iso', ['-T', '-S', path,], atend=atend) + + + def writemedium(self, path, args, dest=None): + if dest == 'BOOTISO': + args.append(path) + cmd = 'boot_iso' + else: + if path: + args += ['-S', path] + else: + args += ['-p', project_manager.profile_path] + args += ['-i', project_manager.get_ipath()[1]] + if dest != None: + args.append(dest) + cmd = 'live_part' + else: + cmd = 'live_iso' + self.call(cmd, args) + + + +class MyHandler(SocketServer.StreamRequestHandler): + def handle(self): + self._event = threading.Event() + # self.rfile is a file-like object created by the handler; + # we can now use e.g. readline() instead of raw recv() calls + data = self.rfile.readline().strip() + if data == 'pw-get': + ui.idle_add(self.dialog) + self._event.wait() + # Likewise, self.wfile is a file-like object used to write back + # to the client + self.wfile.write(self.pw) + + def dialog(self): + ok, self.pw = ui.command('textLineDialog', + ui.data('getpw'), + 'sudo', '', True) + if not ok: + self.pw = '' + self._event.set() + + + +fs = Fs() + +def filesystem(key, *args): + return exports[key](*args) + +__builtin__.filesystem = filesystem +__builtin__.larchscripts = LarchScripts() + +import project +project_manager.init() + diff --git a/build_tools/l7/larch0/gui/dirview.py b/build_tools/l7/larch0/gui/dirview.py new file mode 100755 index 0000000..303f9b6 --- /dev/null +++ b/build_tools/l7/larch0/gui/dirview.py @@ -0,0 +1,172 @@ +#!/usr/bin/python + + +# Next look at switching to a selected directory from the path (DONE), +# switching to a directory in the list, and removing/changing toolbar +# buttons (and their actions). +# Have a checkbutton for hidden files / directories somewhere. + + +import os +from PyQt4 import QtGui, QtCore + +def clicked(r, c): + print r, c + +def iclicked(item): + print item + + +class DirListing(QtGui.QTreeWidget): #qt + # Only using top-level items of the tree + def __init__(self): + QtGui.QTreeWidget.__init__(self) #qt + self._hcompact = False # used for scheduling header-compaction + self.setSelectionMode(QtGui.QAbstractItemView.SingleSelection) + self.headers(['Name']) #qt + self.setRootIsDecorated(False) #qt + + self.connect(self, QtCore.SIGNAL('itemSelectionChanged()'), + self.s_select) + self.connect(self, QtCore.SIGNAL('itemClicked(QTreeWidgetItem *,int)'), + self.s_clicked) + + + def s_select(self): + # Signal a selection change, passing the new selection list (indexes) + s = [self.indexOfTopLevelItem(i) for i in self.selectedItems()] #qt + print "Sel", s + + + def s_clicked(self, item, col): #qt + # I guess I should use this for selection if using single + # click actions, because setting a list up might cause the + # first item to be selected (it doesn't, actually, so select + # could be used), and it should + # only change directory if actually clicked. + + + """This is intended for activating a user-defined editing function. + Tests showed that this is called after the selection is changed, so + if using this signal, use it only in 'Single' selection mode and + use this, not 'select' to record selection changes. Clicking on the + selected row should start editing the cell, otherwise just change + the selection. + """ + ix = self.indexOfTopLevelItem(item) #qt + print ix, col + + + + def headers(self, headers): #qt + self.setHeaderLabels(headers) #qt + if self._hcompact: + self._compact() + + def set(self, items, index=-1): #qt + # Note that each item must be a tuple/list containing + # entries for each column. + self.clear() #qt + c = 0 + for i in items: + item = QtGui.QTreeWidgetItem(self, i) #qt + self.addTopLevelItem(item) #qt + if c == index: + self.setCurrentItem(item) + c += 1 + if self._hcompact: + self._compact() + + def x__compact(self, on=True): + self._hcompact = on + if on: + self._compact() + + def _compact(self): + for i in range(self.columnCount()): #qt + self.resizeColumnToContents(i) #qt + + + +def dirsel(action): + print action.xtag + i = 0 + if action.xindex == 0: + print '/' + else: + path = '' + while i < action.xindex: + i += 1 + path += '/' + dirs[i] + print path + setlisting(path) +# the toolbuttons should stay the same until a different lower directory +# is chosen (one not in the old list?) + + +def setlisting(path): + dlist = os.listdir(path) + dldir = [] + dlfile = [] + for f in dlist: + if os.path.isdir(path + '/' + f): + dldir.append('d:' + f) + else: + dlfile.append('f:' + f) + dldir.sort() + dlfile.sort() + listing.set([d] for d in (dldir + dlfile)) + + +if __name__ == '__main__': + + import sys + + app = QtGui.QApplication(sys.argv) + app.setStyleSheet(""" + QToolButton { + border: 2px solid #8f8f91; + border-radius: 6px; + background-color: yellow; + } + + QToolButton:checked { + background-color: #f0c080; + } +""") + + window = QtGui.QWidget() + listing = DirListing() + bar = QtGui.QToolBar() + bar.setToolButtonStyle(QtCore.Qt.ToolButtonTextOnly) + actg = QtGui.QActionGroup(bar) + QtCore.QObject.connect(actg, QtCore.SIGNAL('triggered (QAction *)'), dirsel) + actg.setExclusive(True) + + layout = QtGui.QVBoxLayout() + layout.addWidget(bar) + layout.addWidget(listing) + window.setLayout(layout) + window.resize(600, 480) + + + + path = '/home/mt/DATA/pyjamas' + + + dirs = path.split('/') +# dirs = ['', 'home', 'mt', 'DATA', 'software-verylong', 'DOCS', 'python_qt'] + butix = 0 + for but in dirs: + bw = bar.addAction(but+'/') + bw.setCheckable(True) + actw = actg.addAction(bw) + actw.xtag = but + actw.xindex = butix + butix += 1 + + setlisting(path) + + window.show() + + sys.exit(app.exec_()) diff --git a/build_tools/l7/larch0/gui/dispatcher.py b/build_tools/l7/larch0/gui/dispatcher.py new file mode 100755 index 0000000..bcdc94c --- /dev/null +++ b/build_tools/l7/larch0/gui/dispatcher.py @@ -0,0 +1,108 @@ +#!/usr/bin/env python +# +# dispatcher.py - Subprocess running as root to call larch scripts +# +# (c) Copyright 2010 Michael Towers (larch42 at googlemail dot com) +# +# This file is part of the larch project. +# +# larch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# larch is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with larch; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#---------------------------------------------------------------------------- +#2010.07.19 + +import os, sys, threading, signal +from subprocess import Popen, PIPE, STDOUT +try: + import json as serialize +except: + import simplejson as serialize + +module_dir = os.path.dirname(os.path.realpath(__file__)) +base_dir = os.path.dirname(module_dir) + + +def out(key, line): + sys.stdout.write(str(key) + ':' + line + '\n') + sys.stdout.flush() + +# Signal dispatcher started +out(0, '==') + +def input_reader(): + global process + id = process.pid + while True: + line = process.stdout.readline() + if not line: + break + + out(id, line.rstrip()) + + process.wait() + out(id, '/%d' % process.returncode) + process = None + +def kill(): + """Kill subprocesses (well, interrupt actually). + """ + if process: + os.killpg(process.pid, signal.SIGINT) + + +process = None +while True: + line = sys.stdin.readline() + if line: + line = line.rstrip() + else: + # Controlling process died + break + cmdx = line.split(None, 1) + cmd = cmdx[0] + response = '' + if cmd in ('archin', 'larchify', 'live_iso', 'live_part', 'boot_iso', + 'test'): + # Start a larch script, together with a thread to read from it. + # The arguments are passed as a serialized list + if process: + response = ("!*** Bug (Dispatcher ERROR):" + " process already running (%d)" % process.pid) + else: + cmdx2 = cmdx[1].split(':', 1) + cmds = ([base_dir + '/cli/%s.py' % cmd, '-s'] + + serialize.loads(cmdx2[1])) + process = Popen(cmds, + preexec_fn=os.setpgrp, # to facilitate interruption + cwd=cmdx2[0], # set to project directory + stdin=PIPE, + stdout=PIPE, + stderr=STDOUT) + t = threading.Thread(target=input_reader, args=()) + t.start() + + elif cmd.startswith('??'): + process.stdin.write(cmd + '\n') + process.stdin.flush() + elif cmd == 'kill': + kill() + elif cmd != 'quit': + response = "!*** Bug (Dispatcher command): " + line + sys.stderr.write(response + '\n!+\n') + sys.stderr.flush() + if cmd == 'quit': + break + +kill() diff --git a/build_tools/l7/larch0/gui/front/docviewer.py b/build_tools/l7/larch0/gui/front/docviewer.py new file mode 100644 index 0000000..a0af083 --- /dev/null +++ b/build_tools/l7/larch0/gui/front/docviewer.py @@ -0,0 +1,68 @@ +#!/usr/bin/env python +# +# docviewer.py +# +# (c) Copyright 2009-2010 Michael Towers (larch42 at googlemail dot com) +# +# This file is part of the larch project. +# +# larch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# larch is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with larch; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#---------------------------------------------------------------------------- +# 2010.06.24 + + +import os + + +class DocViewer: + def __init__(self): + self.index = self._getPage('index.html') + self.homepath = None + ui.widgetlist(fss('fetch_layout', 'docviewer.uim')) + + ui.connectlist( + ('doc:hide*clicked', self._hide), + ('doc:back*clicked', self._back), + ('doc:forward*clicked', self._forward), + ('doc:home*clicked', self.gohome), + ('doc:parent*clicked', self.goto), + (':docs*clicked', self._show), + ) + + def _show(self): + ui.runningtab(3) + + def _hide(self): + ui.runningtab() + + def _back(self): + ui.command('doc:content.prev') + + def _forward(self): + ui.command('doc:content.next') + + def _getPage(self, page): + return fss('get_docs_url', page) + + def gohome(self, home=None): + if home: + self.homepath = self._getPage(home) + self.goto(self.homepath) + + def goto(self, path=None): + if not path: + path = self.index + ui.command('doc:content.setUrl', path) diff --git a/build_tools/l7/larch0/gui/front/editor.py b/build_tools/l7/larch0/gui/front/editor.py new file mode 100644 index 0000000..649f55c --- /dev/null +++ b/build_tools/l7/larch0/gui/front/editor.py @@ -0,0 +1,115 @@ +#!/usr/bin/env python +# +# editor.py +# +# (c) Copyright 2009-2010 Michael Towers (larch42 at googlemail dot com) +# +# This file is part of the larch project. +# +# larch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# larch is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with larch; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#---------------------------------------------------------------------------- +# 2010.06.24 + +class Editor: + def __init__(self): + ui.widgetlist(fss('fetch_layout', 'editor.uim')) + ui.connectlist( + ('edit:ok*clicked', self.ok), + ('edit:cancel*clicked', self.cancel), + ('edit:revert*clicked', self.dorevert), + ('edit:copy*clicked', self.copy), + ('edit:cut*clicked', self.cut), + ('edit:paste*clicked', self.paste), + ('edit:undo*clicked', self.undo), + ('edit:redo*clicked', self.redo), + ) + + def start(self, title, endcall, text='', revert=None): + ui.command('edit:title.markup', ['h3', title]) + self.endcall = endcall + self.revert = revert + try: + self.text0 = revert() if text == None else text + except: + run_error("BUG: Editor - no revert function?") + ui.command('edit:content.text', self.text0) + ui.runningtab(4) + + def ok(self): + self.endcall(ui.command('edit:content.get')) + ui.runningtab() + + def cancel(self): + ui.runningtab() + + def dorevert(self): + if self.revert: + self.text0 = self.revert() + ui.command('edit:content.text', self.text0) + + def copy(self): + ui.command('edit:content.copy') + + def cut(self): + ui.command('edit:content.cut') + + def paste(self): + ui.command('edit:content.paste') + + def undo(self): + ui.command('edit:content.undo') + + def redo(self): + ui.command('edit:content.redo') + + def edit(self, fname, source=None, label=None, filter=None): + """Files (<fname> and <source>) can be either an absolute path or else + relative to the profile directory, the application base directory + or the working directory. Relative paths are determined by the + prefixes 'profile:', 'base:' or 'working:'. + If the file <fname> already exists its contents will be taken as the + starting point, otherwise the file <source>, which may also be an + empty string, will be read in. + Whichever file is available its contents can be filtered by an + optional 'filter' function, which takes the file contents as a + string as argument and returns the transformed contents as another + string. + """ + def revert(): + """If a file is addressed by 'source' revert to its contents, + if source is "", clear the contents, otherwise revert to the + contents as they were before entering the editor. + """ + return textsrc if source != None else text0 + + def endfile(text): + t = text.encode("utf8") + if t and (t[-1] != "\n"): + t += "\n" + fss('savefile', fname, text) + + if source != None: + textsrc = "" if source == "" else fss('readfile', source, + filter=filter) + # Read the file, if it exists, else return None + text0 = fss('readfile', fname, filter=filter, trap=False) + if text0 == None: + assert source != None # The file must be present + text0 = textsrc + if not label: + label = ui.command('editor_data.get', 'msg_dflt') % fname + self.start(label, endfile, text0, revert) + diff --git a/build_tools/l7/larch0/gui/front/logview.py b/build_tools/l7/larch0/gui/front/logview.py new file mode 100644 index 0000000..b9d2ac3 --- /dev/null +++ b/build_tools/l7/larch0/gui/front/logview.py @@ -0,0 +1,94 @@ +#!/usr/bin/env python +# +# logview.py +# +# (c) Copyright 2009-2010 Michael Towers (larch42 at googlemail dot com) +# +# This file is part of the larch project. +# +# larch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# larch is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with larch; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#---------------------------------------------------------------------------- +# 2010.07.09 + +import locale +# Try to work around problems when the system encoding is not utf8 +encoding = locale.getdefaultlocale()[1] +if encoding == "UTF8": + encoding = None + +#TODO: progress bar? +class Progress: + def __init__(self): + self.active = False + ui.widgetlist(fss('fetch_layout', 'progress.uim')) + ui.connect('progress:done*clicked', self._done) + + def _done(self): + self.active = False + ui.runningtab(0) + + def start(self): + # Set busy cursor on the progress area + ui.command('progress:page.busycursor', True) + # Initialize widgets + ui.command("progress:text.text") + ui.command("progress:progress.text") + ui.command("progress:done.enable", False) + ui.command("progress:cancel.enable", True) + self.active = True + ui.runningtab(1) + + def end(self, auto=False): + ui.command("progress:cancel.enable", False) + ui.command("progress:done.enable", True) + # Clear busy cursor on the progress area + ui.command('progress:page.busycursor', True) + ui.command('progress:page.busycursor', False) + if auto: + self._done() + + def addLine(self, line): + # Try to work around problems when the system encoding is not utf8 + if encoding: + line = line.decode(self.encoding, "replace").encode("UTF8") + ui.command("progress:text.append_and_scroll", line) + logger.addLine(line) + + def set(self, text=""): + ui.command("progress:progress.text", text) + + +class Logger: + def __init__(self): + ui.widgetlist(fss('fetch_layout', 'logger.uim')) + ui.connectlist( + ('log:clear*clicked', self.clear), + ('log:hide*clicked', self._hide), + (':showlog*clicked', self._show), + ) + + def clear(self): + ui.command('log:text.text') + + def addLine(self, line): + # Try to work around problems when the system encoding is not utf8 + ui.command('log:text.append_and_scroll', line) + + def _show(self): + ui.runningtab(2) + + def _hide(self): + ui.runningtab() diff --git a/build_tools/l7/larch0/gui/front/mainwindow.py b/build_tools/l7/larch0/gui/front/mainwindow.py new file mode 100644 index 0000000..407b46a --- /dev/null +++ b/build_tools/l7/larch0/gui/front/mainwindow.py @@ -0,0 +1,132 @@ +#!/usr/bin/env python +# +# (c) Copyright 2010 Michael Towers (larch42 at googlemail dot com) +# +# This file is part of the larch project. +# +# larch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# larch is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with larch; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#---------------------------------------------------------------------------- +#2010.07.13 + +import __builtin__ +from uim import Uim, debug +__builtin__.debug = debug + + +_running = False +def fss(*args, **kargs): + while True: + if _running: + ui.command(':larch.busy', [], True) + ok, result = filesystem(*args) + if _running: + ui.command(':larch.busy', [], False) + if ok: + filter = kargs.get('filter') + return filter(result) if filter else result + + if kargs.get('trap', True): + ui.command('errorDialog', result) + # That might return, but the gui should quit (soon?). + return None + +__builtin__.fss = fss + + + +class Ui(Uim): + def __init__(self): + Uim.__init__(self) + + def runningtab(self, i=None): + if (i == None): + i = 1 if progress.active else 0 + if (i == 0) and hasattr(stage, 'reenter'): + stage.reenter() + self.command(':tabs.set', i) + + def fileDialog(self, message, startdir=None, create=False, + dirsonly=False, file=None, bookmarks=None, filter=None): + return self.command('fileDialog', message, startdir, None, + dirsonly, create, file, bookmarks, filter) + + def enable_installation_page(self, on): + self.command(':notebook.enableTab', 1, on) + + def quit(self): + """Do any tidying up which may be necessary. + """ + larchscripts.close() + Uim.quit() + + def data(self, key): + return self.command('main_page_data.get', key) + +__builtin__.ui = Ui() + + +def tab_changed(index): + __builtin__.stage = pages[index] + stage.enter() +ui.connect(':notebook*changed', tab_changed) + + +from page_project import ProjectSettings +from page_installation import Installation +from page_larchify import Larchify +from page_mediumprofile import MediumProfile +from page_medium import Medium + + +from docviewer import DocViewer + +from editor import Editor + +from logview import Logger, Progress + + +def run_error(message, title=None): + ui.command('warningDialog', message, title) +__builtin__.run_error = run_error + +pages = [] +def start(): + pages.append(ProjectSettings()) + pages.append(Installation()) + pages.append(Larchify()) + pages.append(MediumProfile()) + pages.append(Medium()) + + __builtin__.docviewer = DocViewer() + __builtin__.edit = Editor().edit + + __builtin__.progress = Progress() + __builtin__.logger = Logger() + + MainWindow = fss('fetch_layout', 'page_main.uim') + ui.widgetlist(MainWindow) + + ui.connect('$$$uiclose$$$', ui.quit) + ui.connect('$$$uiquit$$$', ui.quit) + ui.connect('$$$cancel$$$', larchscripts.interrupt) + + ui.command(':larch.pack') + # Set up the first gui page (project settings) + pages[0].setup() + ui.command(':larch.show') + _running = True + ui.run() + diff --git a/build_tools/l7/larch0/gui/front/page_installation.py b/build_tools/l7/larch0/gui/front/page_installation.py new file mode 100644 index 0000000..111e247 --- /dev/null +++ b/build_tools/l7/larch0/gui/front/page_installation.py @@ -0,0 +1,188 @@ +# page_installation.py - Handler for the installation page +# +# (c) Copyright 2010 Michael Towers (larch42 at googlemail dot com) +# +# This file is part of the larch project. +# +# larch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# larch is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with larch; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#---------------------------------------------------------------------------- +# 2010.07.19 + +class Installation: + def __init__(self): + ui.widgetlist(fss('fetch_layout', 'page_installation.uim')) + + ui.connectlist( + (':addedpacks*clicked', self.edit_addedpacks), + (':vetopacks*clicked', self.edit_vetopacks), + (':pacmanconf*clicked', self.edit_pacmanconf), + (':repos*clicked', self.edit_repos), + (':editmirrorlist*clicked', self.edit_mirrorlist), + (':cache_change*clicked', self.change_cache), + (':editrepolist*clicked', self.edit_repolist), + (':install*clicked', self.install), + (':sync*clicked', self.dosync), + (':update*clicked', self.doupdate), + (':add*clicked', self.doadd), + (':remove*clicked', self.doremove), + (':installrepos*toggled', self.installrepo), + ) + + + def enter(self): + """This is called when the page is entered/selected/shown. + It performs initializations which depend on the state. + """ + docviewer.gohome('gui_installation.html') + # Set package cache display + ui.command(':cache_show.text', fss('getitem', 'pacman_cache')) + ui.command(':installrepos.opton', fss('getbool', 'installrepo')) + + + def data(self, key): + return ui.command('install_page_data.get', key) + + + def edit_addedpacks(self): + edit('profile:addedpacks') # In profile dir + + + def edit_vetopacks(self): + # If there is no vetopacks file, start an empty one + edit('profile:vetopacks', "") # In profile dir + + + def edit_pacmanconf(self): + edit('profile:pacman.conf.options', # In profile dir + 'base:data/pacman.conf', # Relative to base_dir + label=self.data('edit_pc'), + filter=pacmanoptions) + + + def edit_repos(self): + """This edits the repository list file for the live system. + It will be used to construct the /etc/pacman.conf file. + If the option to specify a different file for the installation + stage is not enabled (the default), this file will also be used + for the installation. + """ + edit('profile:pacman.conf.repos', # In profile dir + 'base:data/pacman.conf.repos', # Relative to base_dir + label=self.data('edit_pr')) + + + def edit_mirrorlist(self): + ml = '/etc/pacman.d/mirrorlist' + if not fss('isfile', ml): + ml = 'base:data/mirrorlist' # Relative to base_dir + edit('working:mirrorlist', ml, + label=self.data('edit_mli')) + + + def change_cache(self): + # Is anything more necessary? Do I need to test the path? + # Would a directory browser be better? + ok, path = ui.command('textLineDialog', + self.data('prompt_ncp'), + None, fss('getitem', 'pacman_cache')) + if ok: + self.set_pacman_cache(path) + + + def set_pacman_cache(self, path): + path = path.strip().rstrip('/') + fss('setitem', 'pacman_cache', path) + ui.command(':cache_show.text', path) + + + def edit_repolist(self): + """This edits the repository list file used for installation, + if the corresponding option is enabled. + """ + # Should it be based on the default or on the profile? + rf = 'profile:pacman.conf.repos' + if not fss('isfile', rf): + rf = 'base:data/pacman.conf.repos' # Relative to base_dir + edit('working:pacman.conf.repos', rf, + label=self.data('edit_pri')) + + + def installrepo(self, on): + fss('setbool', 'installrepo', on) + + + def install(self): + """Start the installation. + """ + self.archin('install') + + + def dosync(self): + self.archin('refresh') + + + def doupdate(self): + f = ui.fileDialog(message=self.data('msg_pu'), + filter=(self.data('filter_pu'), '*.pkg.tar.*')) + if f: + self.archin('update ' + f) + + + def doadd(self): + ok, plist = ui.command('textLineDialog', + self.data('prompt_pi'), + 'pacman -S') + if ok: + self.archin('sync ' + plist.strip()) + + + def doremove(self): + ok, plist = ui.command('textLineDialog', + self.data('prompt_pr'), + 'pacman -Rs') + if ok: + self.archin('remove ' + plist.strip()) + + + def archin(self, cmd): + """This runs the 'archin' script (as root). It doesn't wait for + completion because the output must be collected and displayed + while it is running. The display switches the view to the + progress reporting page. It should probably activate the busy + cursor too. + """ + larchscripts.archin(cmd, ui.command(':installrepos.active')) + + + +def pacmanoptions(text): + """A filter for pacman.conf to remove the repository info. + """ + texto = "" + block = "" + for line in text.splitlines(): + block += line + "\n" + if line.startswith("#["): + break + if line.startswith("[") and not line.startswith("[options]"): + break + if not line.strip(): + texto += block + block = "" + return texto + + + diff --git a/build_tools/l7/larch0/gui/front/page_larchify.py b/build_tools/l7/larch0/gui/front/page_larchify.py new file mode 100644 index 0000000..9868727 --- /dev/null +++ b/build_tools/l7/larch0/gui/front/page_larchify.py @@ -0,0 +1,248 @@ +# page_larchify.py - Handler for the project settings page +# +# (c) Copyright 2010 Michael Towers (larch42 at googlemail dot com) +# +# This file is part of the larch project. +# +# larch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# larch is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with larch; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#---------------------------------------------------------------------------- +# 2010.07.13 + +USERINFO = ['pw', 'maingroup', 'uid', 'skel', 'xgroups', 'expert'] + +class Larchify: + def __init__(self): + ui.widgetlist(fss('fetch_layout', 'page_larchify.uim')) + + ui.connectlist( + (':build*clicked', self.build), + (':ssh*toggled', self.sshtoggle), + (':locales*clicked', self.locales), + (':rcconf*clicked', self.rcconf), + (':initcpio*clicked', self.initcpio), + (':overlay*clicked', self.overlay), + (':utable*clicked', self.uedit), + (':useradd*clicked', self.useradd), + (':userdel*clicked', self.userdel), + (':rootpwb*clicked', self.rootpw), + ) + + self.userheaders = self.data('uheaders') + + + def data(self, key): + return ui.command('larchify_page_data.get', key) + + + def enter(self): + """This is called when the page is entered/selected/shown. + It performs initializations which depend on the state. + """ + docviewer.gohome('gui_larchify.html') + + # Check that it could possibly be an Arch installation + idir = fss('get_installation_dir') + couldBeArch = fss('isdir', ':var/lib/pacman/local') + ui.command(':build.enable', couldBeArch) + if not couldBeArch: + run_error(_("No Arch installation at %s") % idir) + + # ssh keys + sshon = fss('isfile', ':usr/bin/ssh-keygen') + ui.command(':ssh.enable', sshon) + + if fss('isfile', 'profile:nosshkeys'): + sshon = False + ui.command(":ssh.set", sshon) + + # users table + idir_normal = idir != '/' + ui.command(':users.enable', idir_normal) + if idir_normal: + # Fetch users information + fss('newUserinfo') + self.readuserinfo() + + # Root password + self.showrootpw() + + self.reenter() + + + def reenter(self): + """These also need resetting after a build run. + """ + # Whether there is an old system.sqf to reuse? + ossqf = fss('oldsqf') + if not ossqf: + ui.command(':oldsquash.set', False) + ui.command(':oldsquash.enable', ossqf) + + # Whether there is a set of old glibc locales to reuse? + olcl = fss('oldlocales') + if not olcl: + ui.command(':oldlocales.set', False) + ui.command(':oldlocales.enable', olcl) + +#TODO: Remove hack if the underlying bug gets fixed + ui.command(":larchify_advanced.enable_hack") + + + def readuserinfo(self, select=None): + """'select' should be a username, defaulting to the first entry. + """ + self.usersel = 0 + self.userlist = [] + i = 0 + for u in fss('allusers'): + self.userlist.append(self.userinfolist(u)) + if u == select: + self.usersel = i + i += 1 + ui.command(':utable.set', self.userlist, self.usersel) + + + def userinfolist(self, user): + return [user] + fss('getuserinfo', user, USERINFO) + + + def uedit(self, row, column): + if self.usersel == row: + uname = self.userlist[row][0] + ulcell = self.userlist[row][column] + if column == 4: + ok, text = self.select_skel(ulcell) + else: + ok, text = ui.command('textLineDialog', + self.userheaders[column] + ':', 'larchify', ulcell) + text = text.strip() + if ok: + try: + if (column == 0) and (text != ''): + # Rename the user, by adding a new one and deleting + # the old + uname = text + fss('newuser', uname) + i = 0 + for f in USERINFO: + i += 1 + fss('userset', uname, f, self.userlist[row][i]) + if not fss('deluser', ulcell): + run_error(self.data('rn_error')) + + else: + fss('userset', uname, USERINFO[column-1], text) + fss('saveusers') + + except: + run_error(self.data('ud_error')) + self.readuserinfo(uname) + + else: + self.usersel = row + + + def select_skel(self, current): + # Present a list of available 'skel' folders + self.skellist = [self.data('def_skel')] + for f in fss('listskels'): + self.skellist.append(f.rsplit('/skel_', 1)[1]) + try: + i = self.skellist.index(current) + except: + i = 0 + ok, skeli = ui.command('listDialog', self.data('skel_lbl'), + self.data('skel_ttl'), self.skellist, i) + if ok: + return (True, '' if skeli == self.skellist[0] + else skeli.split()[0]) + return (False, '') + + + def useradd(self): + ok, name = ui.command('textLineDialog', self.data('newlogin')) + if ok: + name = name.strip() + if name != '' and fss('newuser', name): + self.userlist.append(self.userinfolist(name)) + self.usersel = len(self.userlist) -1 + ui.command(':utable.set', self.userlist, self.usersel) + + + def userdel(self): + if self.usersel >= 0: + user = self.userlist[self.usersel][0] + if fss('deluser', user): + del(self.userlist[self.usersel]) + lu = len(self.userlist) + if lu: + if lu <= self.usersel: + self.usersel -= 1 + ui.command(':utable.set', self.userlist, self.usersel) + + + def showrootpw(self): + self.rootpw = fss('readfile', 'profile:rootpw', trap=False) + if self.rootpw == None: + self.rootpw = "" + ui.command(':rootpwe.text', self.rootpw) + + + def rootpw(self): + ok, pw = ui.command('textLineDialog', self.data('newrootpw'), + "larchify", self.rootpw) + if ok: + pw = pw.strip() + if pw: + fss('savefile', 'profile:rootpw', pw) + else: + fss('rm_rf', 'profile:rootpw') + self.showrootpw() + + + def sshtoggle(self, on): + """Whether the system ssh keys are pregenerated + depends on the presence of the profile file 'nosshkeys' + (and of course on openssh being installed). + """ + sshoff = fss('isfile', 'profile:nosshkeys') + if on: + if sshoff: + fss('rm_rf', 'profile:nosshkeys') + elif not sshoff: + fss('savefile', 'profile:nosshkeys', "Don't pregenerate ssh keys") + + + def locales(self): + edit('profile:rootoverlay/etc/locale.gen', 'install:etc/locale.gen') + + + def rcconf(self): + edit('profile:rootoverlay/etc/rc.conf', 'install:etc/rc.conf') + + + def initcpio(self): + edit('profile:rootoverlay/etc/mkinitcpio.conf.larch0', + 'install:etc/mkinitcpio.conf.larch0') + + + def overlay(self): + fss('browse', 'profile:rootoverlay') + + + def build(self): + larchscripts.larchify(ui.command(':oldsquash.active'), + ui.command(':oldlocales.active')) diff --git a/build_tools/l7/larch0/gui/front/page_medium.py b/build_tools/l7/larch0/gui/front/page_medium.py new file mode 100644 index 0000000..75f0efe --- /dev/null +++ b/build_tools/l7/larch0/gui/front/page_medium.py @@ -0,0 +1,320 @@ +# page_medium.py - Handler for the project settings page +# +# (c) Copyright 2010 Michael Towers (larch42 at googlemail dot com) +# +# This file is part of the larch project. +# +# larch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# larch is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with larch; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#---------------------------------------------------------------------------- +# 2010.07.13 + +"""This page can also handle sources other than the normal larch +installation. It should convert any larch image into +another, with different medium and/or different bootloader, so long as the +bootloader is supported by the source image. +""" + +import os +BOOTLOADERS = ('grub', 'syslinux') + +class Medium: + def __init__(self): + ui.widgetlist(fss('fetch_layout', 'page_medium.uim')) + + ui.connectlist( + (':source_larch*toggled', self.src_larch), + (':source_dev*toggled', self.src_dev), + (':source_iso*toggled', self.src_iso), + (':source_path*toggled', self.src_path), + (':source_select*clicked', self.src_select), + (':vlabelb*clicked', self.newlabel), + (':grub*toggled', self.grub), + (':syslinux*toggled', self.syslinux), + (':selectpart*clicked', self.choosepartition), + (':search*toggled', self.searchtoggled), + (':destination*toggled', self.activate_actions), + (':make_medium*clicked', self.make), + (':bootcd*clicked', self.makeboot), + ) + ui.command(':bootcd.enable', False) + + + def enter(self): + """This is called when the page is entered/selected/shown. + It performs initializations which depend on the state. + """ + self.source = '' + self.destination = '' + ui.command(':larchpart.text') + docviewer.gohome('gui_medium.html') + if ui.command(':source_larch.active'): + self.src_larch(True) + else: + ui.command(':source_larch.set', True) + ui.command(':%s.set' % fss('getitem', 'medium_search'), True) + ui.command(':vlabele.text', fss('get_mediumlabel')) + + + def data(self, key): + return ui.command('medium_page_data.get', key) + + + def setupbootloader(self, init=False): + if init: + self.bootloaders = [] + self.nosave = False + self.source = '' + for b in BOOTLOADERS: + ui.command(':%s.set' % b, False) + ui.command(':%s.enable' % b, False) + pbl = fss('getitem', 'medium_btldr') + for b in self.bootloaders: + ui.command(':%s.enable' % b, True) + if self.bootloaders: + if pbl not in self.bootloaders: + pbl = self.bootloaders[0] + ui.command(':%s.set' % pbl, True) + ui.command(':dosave.set', not self.nosave) + ui.command(':source_show.text', self.source) + self.activate_actions() + + + def activate_actions(self, *args): + # There needs to be a bootloader + bl = self.get_bootloader() + bcdok = (ui.command(':source_dev.active') + and bool(self.source) + and bool(bl)) + ui.command(':bootcd.enable', bcdok) + # If using a destination partition, that needs to be available. + wp = ui.command(':destination.active') + if wp: + # If writing to a partition without installing a bootloader + if ui.command(':nombr.active'): + bl = True # bootloader not necessary + dp = bool(self.destination) + else: + dp = True + ui.command(':make_medium.enable', bool(self.source) and bl and dp) + ui.command(':detection.enable', bcdok or wp) + + + def get_bootloader(self): + if ui.command(':grub.active'): + return 'grub' + if ui.command(':syslinux.active'): + return 'syslinux' + return None + + + def _testmedium(self, cc): + # Runs in background thread ... + self.bootloaders = [] + if not (cc & 8): + self.bootloaders.append('syslinux') + if not (cc & 16): + self.bootloaders.append('grub') + self.nosave = bool(cc & 2) + ui.idle_add(self.setupbootloader, bool(cc & 1)) + return True # return immediately to normal view + + + def src_larch(self, on): + if on: + mpath, ok, self.bootloaders, self.nosave = fss('testmedium') + if ok: + self.source = mpath + else: + self.source = '' + run_error(self.data('msg_med') % mpath) + self.setupbootloader() + + ui.command(':source_select.enable', not on) + ui.command(':chroot.set', on) + + + def src_dev(self, on): + """The source system is on a mountable device, which must be + selected from a list of available devices (via the Choose button) + and tested for validity, maybe the presence of larch/system.sqf. + """ + if on: + self.setupbootloader(init=True) + + + def src_iso(self, on): + """The source system is in an 'iso' file, which must be + selected by browsing the file system (via the Choose button) + and tested for validity, maybe the presence of larch/system.sqf. + """ + if on: + self.setupbootloader(init=True) + + + def src_path(self, on): + """The source system is in a directory, which must be + selected by browsing the file system (via the Choose button) + and tested for validity, maybe the presence of larch/system.sqf. + """ + if on: + self.setupbootloader(init=True) + + + def src_select(self): + """The function of this button varies according to the selected + source ... + """ + src = None + if ui.command(':source_dev.active'): + part = self.selectpart() + if part: + src = part + + elif ui.command(':source_iso.active'): + iso = ui.fileDialog(self.data('iso_src'), + filter=(self.data('iso_type'), '*.iso')) + if iso: + src = iso + + elif ui.command(':source_path.active'): + medium = ui.fileDialog(self.data('medium_src'), dirsonly=True) + if medium: + src = medium + + if src: + self.source = src + larchscripts.testmedium(src, self._testmedium) + + + def grub(self, on): + if on: + fss('setitem', 'medium_btldr', 'grub') + + def syslinux(self, on): + if on: + fss('setitem', 'medium_btldr', 'syslinux') + + + def newlabel(self): + ok, l = ui.command('textLineDialog', + self.data('prompt_label'), + None, fss('getitem', 'medium_label')) + if ok: + ui.command(':vlabele.text', fss('set_mediumlabel', l)) + + + def choosepartition(self): + p = self.selectpart(True) + if p: + ui.command(':larchpart.text', p) + self.destination = p + self.activate_actions() + + + def selectpart(self, write=False): + # Present a list of available partitions (only unmounted ones + # are included) + self.partlist = fss('get_partitions') + ok, choice = ui.command('listDialog', + self.data('parts_dst') if write else self.data('parts_src'), + self.data('parts_t'), + self.partlist, len(self.partlist) - 1) + # The partition to be used is fetched from the gui, so there is no + # need to save it anywhere else. + if ok: + return choice.split()[0] + else: + return None + + + def searchtoggled(self, on): + ui.command(':nolarchboot.enable', not on) + + + def make(self): + """Write the larch medium. + """ + args = ['-l', ui.command(':vlabele.get')] + if ui.command(':syslinux.active'): + args.append('-b') + + # Is it standard (using profile, etc.) or copying? + if ui.command(':source_larch.active'): + # Normal larch build + path = '' + if not ui.command(':chroot.active'): + args.append('-c') + + else: + # Copying from another larch medium + path = self.source + if ui.command(':chroot.active'): + args.append('-C') + + # Write to iso file or to partition? + if ui.command(':destination.active'): + # Write to partition + for db in ('label', 'uuid', 'device', 'search'): + if ui.command(':%s.active' % db): + detect = db + args += ['-d', detect] + if (detect != 'search') and ui.command(':nolarchboot.active'): + args.append('-n') + args.append('-a' if ui.command(':dosave.active') else '-A') + if ui.command(':noformat.active'): + args.append('-x') + if ui.command(':nombr.active'): + args.append('-m') + larchscripts.writemedium(path, args, + os.path.basename(self.destination)) + + else: + # Write an 'iso' file + df = self.isopath() + if df: + args += ['-D', df[0], '-o', df[1]] + larchscripts.writemedium(path, args) + + + def makeboot(self): + return + args = ['-l', fss('getbootisolabel')] + if ui.command(':syslinux.active'): + args.append('-b') + path = os.path.basename(self.source) + if ui.command(':chroot.active'): + args.append('-C') + df = self.isopath(bootiso=True) + if df: + args += ['-D', df[0], '-o', df[1]] + larchscripts.writemedium(path, args, 'BOOTISO') + + + def isopath(self, bootiso=False): + sdir = fss('getisosavedir') + ifname = fss('getbootisofile' if bootiso else 'getisofile') + path = ui.fileDialog(self.data('isopath'), startdir=sdir, + create=True, file=ifname, filter=(self.data('iso_type'), '*.iso')) + if path: + f = os.path.basename(path) + d = os.path.dirname(path) + if d != sdir: + fss('setitem', 'isosavedir', d) + if f != ifname: + fss('setitem', 'bootisofile' if bootiso else 'isofile', f) + return (d, f) + + return None diff --git a/build_tools/l7/larch0/gui/front/page_mediumprofile.py b/build_tools/l7/larch0/gui/front/page_mediumprofile.py new file mode 100644 index 0000000..0ebb769 --- /dev/null +++ b/build_tools/l7/larch0/gui/front/page_mediumprofile.py @@ -0,0 +1,87 @@ +# page_mediumprofile.py - Handler for the project settings page +# +# (c) Copyright 2010 Michael Towers (larch42 at googlemail dot com) +# +# This file is part of the larch project. +# +# larch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# larch is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with larch; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#---------------------------------------------------------------------------- +# 2010.07.14 + + +class MediumProfile: + def __init__(self): + ui.widgetlist(fss('fetch_layout', 'page_mediumprofile.uim')) + + ui.connectlist( + (':bootlines*clicked', self.editbootlines), + (':grubtemplate*clicked', self.editgrub), + (':syslinuxtemplate*clicked', self.editsyslin), + (':cdroot*clicked', self.browsecdroot), + (':nosessionsave*toggled', self.nosessionsave), + ) + + + def enter(self): + """This is called when the page is entered/selected/shown. + It performs initializations which depend on the state. + """ + docviewer.gohome('gui_mediumprofile.html') + ui.command(':nosessionsave.set', fss('isfile', 'profile:nosave')) + + +# def data(self, key): +# return ui.command('mediumprofile_page_data.get', key) + + + def editbootlines(self): + edit('profile:bootlines', 'base:data/bootlines') + + + def editgrub(self): + f0 = 'profile:cd-root/grub0/menu.lst' + if not fss('isfile', f0): + f0 = 'base:cd-root/grub0/menu.lst' + edit('profile:cd-root/grub/menu.lst', f0) + + + def editsyslin(self): + f0 = 'profile:cd-root/isolinux0/isolinux.cfg' + if not fss('isfile', f0): + f0 = 'base:cd-root/isolinux0/isolinux.cfg' + edit('profile:cd-root/isolinux/isolinux.cfg', f0) + + + def browsecdroot(self): + fss('browse', 'profile:cd-root') + + + def nosessionsave(self, on): + """Whether session saving is available is firstly determined by + the writability of the boot device (assuming the extension + feature to allow the use of other devices is not being used). + The standard scripts will also not offer session saving if the + file larch/nosave is present on the boot medium. + """ + ns = fss('isfile', 'profile:nosave') + if on: + if not ns: + fss('savefile', 'profile:nosave', + "Suggestion to disable session saving" + " (can be overridden)") + else: + fss('rm_rf', 'profile:nosave') + diff --git a/build_tools/l7/larch0/gui/front/page_project.py b/build_tools/l7/larch0/gui/front/page_project.py new file mode 100644 index 0000000..e9b902d --- /dev/null +++ b/build_tools/l7/larch0/gui/front/page_project.py @@ -0,0 +1,203 @@ +# page_project.py - Handler for the project settings page +# +# (c) Copyright 2010 Michael Towers (larch42 at googlemail dot com) +# +# This file is part of the larch project. +# +# larch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# larch is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with larch; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#---------------------------------------------------------------------------- +# 2010.07.13 + +import os + +class ProjectSettings: + def __init__(self): + ui.widgetlist(fss('fetch_layout', 'page_project.uim')) + + ui.connectlist( + (':choose_profile_combo*changed', self.switch_profile), + (':profile_rename*clicked', self.rename_profile), + (':profile_browse*clicked', self.browse_profile), + (':profile_delete*clicked', self.delete_profile), + (':profile_save*clicked', self.save_profile), + (':installation_path_change*clicked', self.new_build_path), + (':choose_project_combo*changed', self.switch_project), + (':new_project*clicked', self.get_new_project_name), + (':project_delete*clicked', self.delete_project), + ) + + + def setup(self): + # Initialize project combobox + self.projects = fss('get_projects') + self.project_name = fss('get_project') + try: + pix = self.projects.index(self.project_name) + except: + self.switch_project(0) + return + ui.command(':choose_project_combo.set', self.projects, pix) + # Initialize profile combobox + self.profiles = fss('get_profiles') + self.profile_name = fss('get_profile') + try: + pfix = self.profiles.index(self.profile_name) + except: + self.switch_profile(0) + pfix = 0 + ui.command(':choose_profile_combo.set', self.profiles, pfix) + # Initialize installation_dir display + self.set_build_dir(fss('get_installation_dir')) + + + def enter(self): + """This is called when the page is entered/selected/shown. + It performs initializations which depend on the state. + """ + docviewer.gohome('gui_project_settings.html') + + + def data(self, key): + return ui.command('project_page_data.get', key) + + + def set_build_dir(self, path): + self.build_dir = path + ui.command(':installation_path_show.text', self.build_dir) + ui.enable_installation_page(self.build_dir != '/') + + + def switch_profile(self, index): + """This has no effect on the display! + It is assumed that the display is already updated, or will be + updated later, and that the index is valid, so that the operation + cannot fail. + """ + self.profile_name = self.profiles[index] + fss('set_profile', self.profile_name) + + + def browse_profile(self): + source = ui.fileDialog(self.data('file_ps'), dirsonly=True, + bookmarks=fss('get_profile_bookmarks'), + startdir=fss('getitem', 'profile_browse_dir')) + if source: + fss('setitem', 'profile_browse_dir', os.path.dirname(source)) + if os.path.basename(source) in self.profiles: + if not ui.command('confirmDialog', self.data('prompt_pr')): + return + if fss('get_new_profile', source): + self.setup() + else: + run_error(self.data('msg_npd') % source) + + + def rename_profile(self): + if fss('can_rename_profile'): + ok, new = ui.command('textLineDialog', + self.data('prompt_pn'), + None, self.profile_name) + if ok: + new = new.strip() + if new in self.profiles: + ui.command('warningDialog', self.data('prompt_pe') % new) + else: + fss('rename_profile', new) + self.setup() + else: + ui.command('infoDialog', self.data('msg_pu')) + + + def save_profile(self): + bookmarks = fss('get_profile_bookmarks') + startdir = fss('getitem', 'profile_browse_dir') + path = ui.fileDialog(self.data('file_sp'), + create=True, file=self.profile_name, + bookmarks=bookmarks, + startdir=startdir if startdir else bookmarks[0][0]) + if path: + fss('setitem', 'profile_browse_dir', os.path.dirname(path)) + ok = fss('save_profile', path, False) + if ok == False: + if ui.command('confirmDialog', self.data('prompt_dr')): + # Force overwrite + fss('save_profile', path, True) + elif ok == None: + run_error(self.data('msg_piu')) + else: + self.setup() + + + def delete_profile(self): + plist = fss('list_free_profiles') + if plist: + ok, item = ui.command('listDialog', self.data('prompt_dp'), + self.data('delprof'), plist) + if ok: + if fss('delete_profile', item): + self.setup() + else: + ui.command('infoDialog', self.data('msg_dpff') % item) + else: + ui.command('infoDialog', self.data('msg_npf')) + + + def new_build_path(self): + # Is anything more necessary? Do I need to test or create the path? + # I don't think so, the installation code does that. + # If the path is "/", the installation page should be inhibited, + # but that is handled by 'setup'. + ok, path = ui.command('textLineDialog', + self.data('prompt_ip'), + None, self.build_dir) + if ok: + path = fss('set_installation_dir', path) + if path: + self.set_build_dir(path) + + + def switch_project(self, index): + fss('set_project', self.projects[index]) + self.setup() + + + def get_new_project_name(self): + ok, name = ui.command('textLineDialog', + self.data('prompt_np'), + None, self.project_name) + if ok: + if name in self.projects: + run_error(self.data('msg_pe') % name) + else: + fss('set_project', name) + self.setup() + + + def delete_project(self): + """Pop up a list of eligible project names, the selected one + will be deleted. + """ + plist = fss('list_free_projects') + if plist: + ok, item = ui.command('listDialog', self.data('prompt_pd'), + self.data('delproj'), plist) + if ok: + fss('delete_project', item) + self.setup() + else: + ui.command('infoDialog', self.data('msg_np')) + + diff --git a/build_tools/l7/larch0/gui/front/uim.py b/build_tools/l7/larch0/gui/front/uim.py new file mode 100644 index 0000000..71e106b --- /dev/null +++ b/build_tools/l7/larch0/gui/front/uim.py @@ -0,0 +1,1327 @@ +#!/usr/bin/env python +# -*- coding: UTF-8 -*- +# +# uim.py +# +# (c) Copyright 2010 Michael Towers (larch42 at googlemail dot com) +# +# This file is part of the larch project. +# +# larch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# larch is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with larch; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#---------------------------------------------------------------------------- +# 2010.18.07 + +#TODO? +# Fetching of image and icon files via a sort of url-like mechanism, I +# suppose initially using the 'base:' prefix might be ok. +# Then the cwd of the gui script would be irrelevant. + +#New file dialog for accessing the 'server' end. + + +"""UIM - User Interface Module + +The aim is to provide a means of creating graphical user interfaces of +moderate complexity while abstracting the interface to the actual underlying +toolkit in such a way that (at least potentially) an alternative toolkit +could be used. +[At present this aspect is rather theoretical since only a pyqt based +version has been written.] + +The gui layout is specified as a python data structure, using widget types, +parameter and signal names independent of the underlying toolkit. All +widgets are accessible by their tag, which must be specified. + +A widget is defined by a call to the 'widget' method of the GuiApp instance. +The first argument is the widget type, the second is the widget tag, the +remaining ones must be named, they form the parameters to the constructor. +If the widget is a 'container' (i.e. if it contains other widgets), it will +need a 'layout' parameter defining the layout of its contents. + +There is also a 'widgetlist' method which accepts a list of widget +definitions, each definition being itself a list. The first entry in a +definition is the widget type, the second is the widget tag, the +third is a dictionary containing all the parameters. For convenience (I'm not +sure if I will keep this, though) any entries after the dictionary will be +treated as signal names. These are just added to the parameter dictionary +with value '' (enabling the signal with its default tag). + +Signals have signatures/keys comprising the tag of the emitting widget and +the signal name (separated by '*'), and this will by default also be the tag +by which the signal is known for connection purposes. But this can be +overridden, for example to allow several widgets to emit the same signal. +In the latter case the widget tag can (optionally) be passed as the first +argument to the signal handler. + +Passing signal names as parameters to a widget constructor enables these +signals. They can later be disabled, if desired. + +Connect and disconnect methods are available, to associate (or dissociate) +handler functions with (/from) signals. +""" + +import os, sys, traceback, threading +from PyQt4 import QtGui, QtCore, QtWebKit +from collections import deque +#try: +# import json +#except: +# import simplejson as json + +#++++++++++++++++++++++++++++++++++++++++++++++++++++ +#TODO +# Add more widgets +# Add more attribute handling +# Add more signal handling + +#---------------------------------------------------- + +def debug(text): + sys.stderr.write("GUI: %s\n" % text) + sys.stderr.flush() + + +# Widget Base Classes - essentially used as 'Mixins' >>>>>>>>>>>>>>>> +class WBase: + def x__tt(self, text): + """Set tooltip. + """ + self.setToolTip(text) #qt + + def x__text(self, text=""): + """Set widget text. + """ + self.setText(text) #qt + + def x__enable(self, on): + """Enable/Disable widget. on should be True to enable the widget + (display it in its normal, active state), False to disable it + (which will normally be paler and non-interactive). + """ + self.setEnabled(on) #qt + + def x__focus(self): + self.setFocus() #qt + + def x__width(self, w): + """Set the minimum width for the widget. + """ + self.setMinimumWidth(w) #qt + + def x__typewriter(self, on): + """Use a typewriter (fixed spacing) font. + """ + if on: + f = QtGui.QFont(self.font()) #qt + f.setFamily("Courier") #qt + self.setFont(f) #qt + + def x__busycursor(self, on): + """Set/clear the busy-cursor for this widget. + """ + if on: + self.setCursor(QtCore.Qt.BusyCursor) #qt + else: + self.unsetCursor() #qt + + +class BBase: + """Button mixin. + """ + def x__icon(self, icon): + self.setIcon(self.style().standardIcon(icondict[icon])) #qt + +#qt +icondict = { "left" : QtGui.QStyle.SP_ArrowLeft, + "right" : QtGui.QStyle.SP_ArrowRight, + "down" : QtGui.QStyle.SP_ArrowDown, + "up" : QtGui.QStyle.SP_ArrowUp, + "reload" : QtGui.QStyle.SP_BrowserReload, + } + +class Container: + """This just adds layout management for widgets which contain + other widgets. + """ + def x__layout(self, layout, immediate=False): + """A layout specifies and organizes the contents of a widget. + Note that the layouting is not immediately performed by default as + it is unlikely that all the contained widgets have been defined yet. + """ + self._layout = layout + if immediate: + self.x__pack() + + def x__pack(self): + """A layout call specifies and organizes the contents of a widget. + The layout can be a layout manager list, or a single widget name + (or an empty string, which will cause a warning to be issued, but + may be useful during development). + + There are three sorts of thing which can appear in layout manager + lists (apart from the layout type at the head of the list and an + optional attribute dict as second item). There can be named + widgets, there can be further layout managers (specified as lists, + nested as deeply as you like) and there can be layout widgets, + like spacers and separators. + + A layout widget can have optional arguments, which are separated + by commas, e.g. 'VLINE,3' passes the argument '3' to the VLINE + constructor. + """ + # getattr avoids having to have an __init__() for Container. + if getattr(self, '_layout', None): + if self._layout != '$': + self.setLayout(self.getlayout(self._layout)) + self._layout = '$' + else: + debug("No layout set on '%s'" % self.w_name) + + def getlayout(self, item): + if isinstance(item, list): + try: + # Create a layout manager instance + layoutmanager = layout_table[item[0]]() + assert isinstance(layoutmanager, Layout) + except: + gui_error("Unknown layout type: %s" % item[0]) + if (len(item) > 1) and isinstance(item[1], dict): + dictarg = item[1] + ilist = item[2:] + else: + dictarg = {} + ilist = item[1:] + # Build up the list of objects to lay out + # If the layout manager is a GRID, accept only grid rows ('+') + if isinstance(layoutmanager, GRID): + args = [] + rowlen = None + for i in ilist: + if isinstance(i, list) and (i[0] == '+'): + args.append(self.getlayoutlist(i[1:], grid=True)) + if rowlen == None: + rowlen = len(i) + elif len(i) != rowlen: + gui_error("Grid (%s) row lengths unequal" + % self.w_name) + else: + gui_error("Grid (%s) layouts must consist of grid" + " rows ('+')" % self.w_name) + else: + # Otherwise the elements of the argument list can be: + # A sub-layout + # A widget + # A SPACE + args = self.getlayoutlist(ilist) + layoutmanager.do_layout(args) + # Attributes + for key, val in dictarg: + handler = "x__" + key + if hasattr(layoutmanager, handler): + getattr(layoutmanager, handler)(val) + return layoutmanager + + else: + # It must be a widget, which will need to be put in a box (qt) + return self.getlayout(['VBOX', item]) + + def getlayoutlist(self, items, grid=False): + objects = [] + for i in items: + if isinstance(i, list): + obj = self.getlayout(i) + else: + parts = i.split(',') + i = parts[0] + args = parts[1:] + try: + obj = layout_table[i](*args) + if not (isinstance(obj, SPACE) # or a separator line + or isinstance(obj, QtGui.QWidget)): #qt + assert (grid and isinstance(obj, Span)) + except: + obj = guiapp.getwidget(i) + if obj != None: + if isinstance(obj, Container): + obj.x__pack() + else: + gui_error("Bad item in layout of '%s': '%s'" + % (self.w_name, i)) + objects.append(obj) + return objects + + +class XContainer(Container): + """This is a mixin class for containers which can contain more than + one layout. + """ + def x__layout(self, layout): + gui_error("An extended container (%s) has no 'layout' method" + % self.w_name) + + +class TopLevel(Container): + def x__show(self): + self.set_visible() + + def set_visible(self, on=True): + self.setVisible(on) #qt + + def x__size(self, w_h): + w, h = [int(i) for i in w_h.split("_")] + self.resize(w, h) #qt + + def x__icon(self, iconpath): + guiapp.setWindowIcon(QtGui.QIcon(iconpath)) #qt + + def x__title(self, text): + self.setWindowTitle(text) #qt + + def x__getSize(self): + s = self.size() #qt + return "%d_%d" % (s.width(), s.height()) #qt + + def x__getScreenSize(self): + dw = guiapp.desktop() #qt + geom = dw.screenGeometry(self) #qt + return "%d_%d" % (geom.width(), geom.height()) #qt + +#<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + +class Window(QtGui.QWidget, TopLevel): #qt + """This is needed to trap window closing events. It also supports + a 'busy' mechanism. + """ + def __init__(self): + QtGui.QWidget.__init__(self) #qt + self.closesignal = "" + self.busystate = False + self.busy_lock = threading.Lock() + + def closeEvent(self, event): #qt + if self.closesignal: + guiapp.sendsignal(self.closesignal) + event.ignore() #qt + return + QtGui.QWidget.closeEvent(self, event) #qt + + def x__closesignal(self, text): + self.closesignal = text + + def x__busy(self, widgets, on, busycursor=True): + """This activates (or deactivates, for on=False) a 'busy' mechanism, + which can be one or both of the following: + Make the application's cursor change to the 'busy cursor'. + Disable a group of widgets. + There is a lock to prevent the busy state from being set when it + is already active. + """ + # I couldn't get the following calls to work: + # w.setCursor(QtCore.Qt.BusyCursor) + # w.unsetCursor() + self.busy_lock.acquire() + if on: + if self.busystate: + debug("*ERROR* Attempt to set busy state twice") + self.busy_lock.release() + return + self.busycursor = busycursor + if busycursor: + guiapp.setOverrideCursor(QtCore.Qt.BusyCursor) #qt + else: + if not self.busystate: + debug("*ERROR* Attempt to release busy state twice") + self.busy_lock.release() + return + if self.busycursor: + guiapp.restoreOverrideCursor() #qt + self.busystate = on + self.busy_lock.release() + for wn in widgets: + w = guiapp.getwidget(wn) + if w: + w.setEnabled(not on) #qt + else: + debug("*ERROR* No widget '%s'" % wn) + + +class Dialog(QtGui.QDialog, TopLevel): + def __init__(self): + QtGui.QDialog.__init__(self) #qt + + def x__showmodal(self): + return self.exec_() == QtGui.QDialog.Accepted #qt + + +class DialogButtons(QtGui.QDialogButtonBox): #qt + def __init__(self): + return + + def x__buttons(self, args): + """This keyword argument MUST be present. + """ + buttons = 0 + for a in args: + try: + b = getattr(QtGui.QDialogButtonBox, a) #qt + assert isinstance(b, int) #qt + buttons |= b #qt + except: + gui_warning("Unknown Dialog button: %s" % a) + QtGui.QDialogButtonBox.__init__(self, buttons) #qt + + def x__dialog(self, dname): + """This must be set or else the dialog buttons won't do anything. + """ + self._dialog = guiapp.getwidget(dname) + self.connect(self, QtCore.SIGNAL("clicked(QAbstractButton *)"), #qt + self._clicked) #qt + + def _clicked(self, button): #qt + if self.buttonRole(button) == self.AcceptRole: #qt + self._dialog.accept() #qt + else: + self._dialog.reject() #qt + + +def textLineDialog(label=None, title=None, text="", pw=False): + if label == None: + label = "Enter the value here:" + if title == None: + title = "Enter Information" + if pw: + echo = QtGui.QLineEdit.Password #qt + else: + echo = QtGui.QLineEdit.Normal #qt + result, ok = QtGui.QInputDialog.getText(None, #qt + title, label, echo, text) #qt + return (ok, unicode(result)) + + +def listDialog(label=None, title=None, items=[], current=0): + if label == None: + label = "Choose one of the entries" + if title == None: + title = "Select an item" + item, ok = QtGui.QInputDialog.getItem(None, title, label, items, + current, editable=False) #qt + return (ok, unicode(item)) + + +def confirmDialog(message, title=None): + if title == None: + title = "Confirmation" + return (QtGui.QMessageBox.question(None, title, message, #qt + QtGui.QMessageBox.Yes | QtGui.QMessageBox.Cancel) == #qt + QtGui.QMessageBox.Yes) #qt + + +def infoDialog(message, title=None): + if title == None: + title = "Information" + QtGui.QMessageBox.information(None, title, message) #qt + + +#+++++++++++++++++++++++++++ +# Error handling +def gui_error(message, title=None): + if title == None: + title = "Error" + QtGui.QMessageBox.critical(None, title, message) #qt + guiapp.exit(1) #qt + +def gui_warning(message, title=None): + if title == None: + title = "Warning" + QtGui.QMessageBox.warning(None, title, message) #qt + +def onexcept(text): + debug(traceback.format_exc()) + gui_error(text, "Exception") +#--------------------------- + +fileDialogDir = "/" +def fileDialog(message, start=None, title=None, dir=False, create=False, + file=None, urls=None, filter=None): + # filter is a list: first a textual description, then acceptable glob filenames + global fileDialogDir + if not start: + start = fileDialogDir + dlg = QtGui.QFileDialog(None, message, start) #qt + if title: + dlg.setWindowTitle(title) #qt + dlg.setReadOnly(not create) #qt + if dir: + dlg.setFileMode(dlg.Directory) #qt + elif not create: + dlg.setFileMode(dlg.ExistingFile) #qt + if filter: + dlg.setNameFilter("%s (%s)" % (filter[0], " ".join(filter[1:]))) #qt + + if urls: + urlsqt = [ QtCore.QUrl.fromLocalFile(u[0]) for u in urls ] #qt + urlsqt.append(QtCore.QUrl.fromLocalFile( + QtGui.QDesktopServices.storageLocation( + QtGui.QDesktopServices.HomeLocation))) + + dlg.setSidebarUrls(urlsqt) #qt + + if file: + dlg.selectFile(file) + + if dlg.exec_(): + path = str(dlg.selectedFiles()[0]).strip() + if os.path.isdir(path): + fileDialogDir = path + elif os.path.isfile(path): + fileDialogDir = os.path.dirname(path) + return path + else: + return "" + + +class Stack(QtGui.QStackedWidget, XContainer): #qt + def __init__(self): + QtGui.QStackedWidget.__init__(self) #qt + self.x_twidgets = [] + + def x__pages(self, pages): + self.x_twidgets = pages + + def x__pack(self): + for name in self.x_twidgets: + w = guiapp.getwidget(name) + w.x__pack() + self.addWidget(w) #qt + + def x__set(self, index=0): + self.setCurrentIndex(index) #qt + + +class Notebook(QtGui.QTabWidget, XContainer): #qt + def __init__(self): + QtGui.QTabWidget.__init__(self) #qt + self.x_tabs = [] + self.x_twidgets = [] + + def x__changed(self, name=''): + guiapp.signal(self, 'changed', name, 'currentChanged(int)') #qt + + def x__tabs(self, tabs): + self.x_twidgets = tabs + + def x__pack(self): + for name, title in self.x_twidgets: + w = guiapp.getwidget(name) + w.x__pack() + self.addTab(w, title) #qt + self.x_tabs.append([name, w]) + + def x__set(self, index=0): + self.setCurrentIndex(index) #qt + + def x__enableTab(self, index, on): + self.setTabEnabled(index, on) #qt + + +class Page(QtGui.QWidget, Container): #qt + def __init__(self): + QtGui.QWidget.__init__(self) #qt + + def x__enable(self, on): + """Enable/Disable widget. on should be True to enable the widget + (display it in its normal, active state), False to disable it + (which will normally be paler and non-interactive). + """ + self.setEnabled(on) #qt + + +class Frame(QtGui.QGroupBox, WBase, Container): #qt + def __init__(self): + QtGui.QGroupBox.__init__(self) #qt + self._text = None + + def x__text(self, text): + self._text = text + self.setTitle(text) #qt + +# A hack to improve spacing + def setLayout(self, layout): + topgap = 10 if self._text else 0 + layout.setContentsMargins(0, topgap, 0, 0) #qt + QtGui.QGroupBox.setLayout(self, layout) + + +class OptionalFrame(Frame): #qt + def __init__(self): #qt + Frame.__init__(self) #qt + self.setCheckable(True) #qt + self.setChecked(False) #qt + + def x__toggled(self, name=''): + guiapp.signal(self, 'toggled', name, 'toggled(bool)') #qt + + def x__opton(self, on): + self.setChecked(on) #qt + +#TODO: Is this still needed? (I think it's a qt bug) + def x__enable_hack(self): #qt + if not self.isChecked(): #qt + self.setChecked(True) #qt + self.setChecked(False) #qt + + def x__active(self): + return self.isChecked() #qt + + +def read_markup(markup): + def read_markup0(mlist): + text = '' + for i in mlist: + text += read_markup(i) if isinstance(i, list) else i + return text + tag = markup[0] + if tag == '': + return read_markup0(markup[1:]) + elif tag in ('h1', 'h2', 'h3', 'h4', 'p', 'em', 'strong'): + return '<%s>%s</%s>' % (tag, read_markup0(markup[1:]), tag) + elif tag == 'color': + return '<span style="color:%s;">%s</span>' % (markup[1], + read_markup0(markup[2:])) + return "Markup parse error" + + +class Label(QtGui.QLabel, WBase): #qt + def __init__(self): + QtGui.QLabel.__init__(self) #qt + + def x__markup(self, markup): + self.setText(read_markup(markup)) #qt + + def x__image(self, path): + self.setPixmap(QtGui.QPixmap(path)) #qt + + def x__align(self, pos): + if pos == "center": + a = QtCore.Qt.AlignCenter #qt + else: + a = QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter #qt + self.setAlignment(a) #qt + + +class Button(QtGui.QPushButton, WBase, BBase): #qt + def __init__(self): + QtGui.QPushButton.__init__(self) #qt + + def x__clicked(self, name=''): + guiapp.signal(self, 'clicked', name, 'clicked()') #qt + + +class ToggleButton(QtGui.QPushButton, WBase, BBase): #qt + def __init__(self): + QtGui.QPushButton.__init__(self) #qt + self.setCheckable(True) #qt + + def x__toggled(self, name=''): + guiapp.signal(self, 'toggled', name, 'toggled(bool)') #qt + + def x__set(self, on): + self.setChecked(on) #qt + + +class CheckBox(QtGui.QCheckBox, WBase): #qt + def __init__(self): + QtGui.QCheckBox.__init__(self) #qt + + def x__toggled(self, name=''): + # A bit of work is needed to get True/False state #qt + # instead of 0/1/2 #qt + guiapp.signal(self, 'toggled', name, + 'toggled(bool)', self.s_toggled) #qt + + def s_toggled(self, state): #qt + """Convert the argument to True/False. + """ #qt + return (state != QtCore.Qt.Unchecked,) #qt + + def x__set(self, on): + self.setCheckState(2 if on else 0) #qt + + def x__active(self): + return self.checkState() != QtCore.Qt.Unchecked #qt + + +class RadioButton(QtGui.QRadioButton, WBase): #qt + def __init__(self): + QtGui.QPushButton.__init__(self) #qt + + def x__toggled(self, name=''): + guiapp.signal(self, 'toggled', name, 'toggled(bool)') #qt + + def x__set(self, on): + self.setChecked(on) #qt + + def x__active(self): + return self.isChecked() #qt + + +class ComboBox(QtGui.QComboBox, WBase): #qt + def __init__(self): + QtGui.QComboBox.__init__(self) #qt + + def x__changed(self, name=''): + guiapp.signal(self, 'changed', name, 'currentIndexChanged(int)') #qt + + def x__changedstr(self, name=''): + guiapp.signal(self, 'changedstr', name, + 'currentIndexChanged(const QString &)') #qt + + def x__set(self, items, index=0): + self.blockSignals(True) + self.clear() #qt + if items: + self.addItems(items) #qt + self.setCurrentIndex(index) #qt + self.blockSignals(False) + + +class ListChoice(QtGui.QListWidget, WBase): #qt + def __init__(self): + QtGui.QListWidget.__init__(self) #qt + + def x__changed(self, name=''): + guiapp.signal(self, 'changed', name, 'currentRowChanged(int)') #qt + + def x__set(self, items, index=0): + self.blockSignals(True) + self.clear() #qt + if items: + self.addItems(items) #qt + self.setCurrentRow(index) #qt + self.blockSignals(False) + + +class List(QtGui.QTreeWidget, WBase): #qt + # Only using top-level items of the tree + def __init__(self): + QtGui.QTreeWidget.__init__(self) #qt + self.mode = "" + self.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection) #qt + self.setRootIsDecorated(False) #qt + self._hcompact = False # used for scheduling header-compaction + + def x__select(self, name=''): + guiapp.signal(self, 'select', name, + 'itemSelectionChanged()', self.s_select) #qt + + def x__clicked(self, name=''): + guiapp.signal(self, 'clicked', name, + 'itemClicked(QTreeWidgetItem *,int)', self.s_clicked) #qt + + def s_select(self): + # Signal a selection change, passing the new selection list (indexes) + s = [self.indexOfTopLevelItem(i) for i in self.selectedItems()] #qt + if self.mode == "Single": + return s + else: + return (s,) + + def s_clicked(self, item, col): #qt + """This is intended for activating a user-defined editing function. + Tests showed that this is called after the selection is changed, so + if using this signal, use it only in 'Single' selection mode and + use this, not 'select' to record selection changes. Clicking on the + selected row should start editing the cell, otherwise just change + the selection. + """ + ix = self.indexOfTopLevelItem(item) #qt + return (ix, col) + + def x__selectionmode(self, sm): + self.mode = sm + if sm == "None": + self.setSelectionMode(QtGui.QAbstractItemView.NoSelection) #qt + elif sm == "Single": + self.setSelectionMode(QtGui.QAbstractItemView.SingleSelection) #qt + else: + self.mode = "" + self.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection) #qt + + def x__headers(self, headers): #qt + self.setHeaderLabels(headers) #qt + if self._hcompact: + self._compact() + + def x__set(self, items, index=0): #qt + # Note that each item must be a tuple/list containing + # entries for each column. + self.clear() #qt + c = 0 + for i in items: + item = QtGui.QTreeWidgetItem(self, i) #qt + self.addTopLevelItem(item) #qt + if c == index: + self.setCurrentItem(item) + c += 1 + if self._hcompact: + self._compact() + + def x__compact(self, on=True): + self._hcompact = on + if on: + self._compact() + + def _compact(self): + for i in range(self.columnCount()): #qt + self.resizeColumnToContents(i) #qt + + +class LineEdit(QtGui.QLineEdit, WBase): #qt + def __init__(self): + QtGui.QLineEdit.__init__(self) #qt + + def x__enter(self, name=''): + guiapp.signal(self, 'enter', name, 'returnPressed()') #qt + + def x__changed(self, name=''): + guiapp.signal(self, 'changed', name, 'textEdited(const QString &)') #qt + + def x__get(self): + return unicode(self.text()) #qt + + def x__ro(self, ro): + self.setReadOnly(ro) #qt + + def x__pw(self, star): + self.setEchoMode(QtGui.QLineEdit.Password if star == "+" #qt + else QtGui.QLineEdit.NoEcho if star == "-" #qt + else QtGui.QLineEdit.Normal) #qt + + +class CheckList(QtGui.QWidget, WBase): #qt + def __init__(self): + QtGui.QWidget.__init__(self) #qt + self.box = QtGui.QVBoxLayout(self) #qt + self.title = None + if text: #qt + l.addWidget(QtGui.QLabel(text)) #qt + self.widget = QtGui.QListWidget() #qt + l.addWidget(self.widget) #qt + + def x__title(self, text): + if self.title: + self.title.setText(text) #qt + else: + self.title = QtGui.QLabel(text) #qt + self.box.insertWidget(0, self.title) #qt + + def x__checked(self, index): + return (self.widget.item(index).checkState() == #qt + QtCore.Qt.Checked) #qt + + def x__set(self, items): + self.widget.blockSignals(True) #qt + self.widget.clear() #qt + if items: + for s, c in items: + wi = QtGui.QListWidgetItem(s, self.widget) #qt + wi.setCheckState(QtCore.Qt.Checked if c #qt + else QtCore.Qt.Unchecked) #qt + self.blockSignals(False) #qt + + +class TextEdit(QtGui.QTextEdit, WBase): #qt + def __init__(self): + QtGui.QTextEdit.__init__(self) #qt + + def x__ro(self, ro): + self.setReadOnly(ro) #qt + + def x__append_and_scroll(self, text): + self.append(text) #qt + self.ensureCursorVisible() #qt + + def x__get(self): + return unicode(self.toPlainText()) #qt + + def x__undo(self): + QtGui.QTextEdit.undo(self) #qt + + def x__redo(self): + QtGui.QTextEdit.redo(self) #qt + + def x__copy(self): + QtGui.QTextEdit.copy(self) #qt + + def x__cut(self): + QtGui.QTextEdit.cut(self) #qt + + def x__paste(self): + QtGui.QTextEdit.paste(self) #qt + + +class HtmlView(QtWebKit.QWebView, WBase): #qt + def __init__(self): + QtWebKit.QWebView.__init__(self) #qt + + def x__html(self, content): + self.setHtml(content) #qt + + def x__setUrl(self, url): + self.load(QtCore.QUrl(url)) #qt + + def x__prev(self): + self.back() #qt + + def x__next(self): + self.forward() #qt + + +class SpinBox(QtGui.QDoubleSpinBox, WBase): #qt + def __init__(self): + QtGui.QDoubleSpinBox.__init__(self) #qt + self.step = None + + def x__changed(self, name=''): + guiapp.signal(self, 'changed', name, 'valueChanged(double)') #qt + + def x__min(self, min): + self.setMinimum(min) + + def x__max(self, max): + self.setMaximum(max) + + def x__decimals(self, dec): + self.setDecimals(dec) + if not self.step: + self.setSingleStep(10**(-dec)) + + def x__step(self, step): + self.setSingleStep(step) + + def x__value(self, val): + self.setValue(val) + + +class ProgressBar(QtGui.QProgressBar, WBase): #qt + def __init__(self): + QtGui.QProgressBar.__init__(self) #qt + + def x__set(self, value): + self.setValue(value) #qt + + def x__max(self, max): + self.setMaximum(max) #qt + + + +# Layout classes +class Layout: + """A mixin base class for all layout widgets. + """ + pass + +boxmargin=3 +class _BOX(Layout): + def do_layout(self, items): + self.setContentsMargins(boxmargin, boxmargin, boxmargin, boxmargin) #qt + for wl in items: + if isinstance(wl, QtGui.QWidget): #qt + self.addWidget(wl) #qt + elif isinstance(wl, SPACE): #qt + if wl.size: #qt + self.addSpacing(wl.size) #qt + self.addStretch() #qt + elif isinstance(wl, Layout): #qt + self.addLayout(wl) #qt + else: #qt + gui_error("Invalid Box entry: %s" % repr(wl)) + + +class VBOX(QtGui.QVBoxLayout, _BOX): #qt + def __init__(self): + QtGui.QVBoxLayout.__init__(self) #qt + + +class HBOX(QtGui.QHBoxLayout, _BOX): #qt + def __init__(self): + QtGui.QHBoxLayout.__init__(self) #qt + + +class GRID(QtGui.QGridLayout, Layout): #qt + def __init__(self): + QtGui.QGridLayout.__init__(self) #qt + + def do_layout(self, rows): + y = -1 + for row in rows: + y += 1 + x = -1 + for wl in row: + x += 1 + if isinstance(wl, Span): + continue + # Determine the row and column spans + x1 = x + 1 + while (x1 < len(row)) and isinstance(row[x1], CSPAN): + x1 += 1 + y1 = y + 1 + while (y1 < len(rows)) and isinstance(rows[y1][x], RSPAN): + y1 += 1 + + if isinstance(wl, QtGui.QWidget): #qt + self.addWidget(wl, y, x, y1-y, x1-x) #qt + elif isinstance(wl, Layout): + self.addLayout(wl, y, x, y1-y, x1-x) #qt + elif isinstance(wl, SPACE): + self.addItem(QtGui.QSpacerItem(wl.size, wl.height), + y, x, y1-y, x1-x) #qt + else: + gui_error("Invalid entry in Grid layout: %s" % repr(wl)) + + +class SPACE: + """Can be used in boxes and grids. In boxes only size is of interest, + and it also means vertical size in the case of a vbox. In grids size + is the width. + """ + def __init__(self, size_width='0', height='0'): #qt + self.size = int(size_width) #qt + self.height = int(height) #qt + + +class Span: + """Class to group special grid layout objects together - it doesn't + actually do anything itself, but is used for checking object types. + """ + pass + + +class CSPAN(Span): + """Column-span layout item. It doesn't do anything itself, but it is used + by the Grid layout constructor. + """ + pass + + +class RSPAN(Span): + """Row-span layout item. It doesn't do anything itself, but it is used + by the Grid layout constructor. + """ + pass + + +class HLINE(QtGui.QFrame): #qt + def __init__(self, pad=None): + QtGui.QFrame.__init__(self) #qt + self.setFrameShape(QtGui.QFrame.HLine) #qt + if pad: + self.setFixedHeight(1 + 2*int(pad)) #qt + + +class VLINE(QtGui.QFrame): #qt + def __init__(self, pad=None): + QtGui.QFrame.__init__(self) #qt + self.setFrameShape(QtGui.QFrame.VLine) #qt + if pad: + self.setFixedWidth(1 + 2*int(pad)) #qt + + +class DATA: + """This is not really a widget, it just holds a dictionary of + potentially internationalized messages. + """ + def x__messages(self, mdict): + self.messages = mdict + + def x__get(self, key): + return self.messages.get(key) + + +class Uim(QtGui.QApplication): + """This class represents an application gui, possibly with more than + one top level window. + """ + timers = [] # timer objects + + def __init__(self): + global guiapp + guiapp = self + self.eno = QtCore.QEvent.registerEventType() #qt + QtGui.QApplication.__init__(self, []) #qt + self.setQuitOnLastWindowClosed(False) #qt + + self.widgets = {} # all widgets, key = widget tag + self.signal_dict = {} # signal connections, key = signature + + # callback list for event loop: (callback, arglist) pairs: + self.idle_calls = deque() + + + def event(self, e): + if e.type() == self.eno: + # Process item from list + cb, a = self.idle_calls.popleft() + cb(*a) + return True + else: + return QtGui.QApplication.event(self, e) #qt + + + def run(self): + self.exec_() #qt + + +# def quit(self): +# self.quit() #qt + + + def addwidget(self, fullname, wo): + if self.widgets.has_key(fullname): + gui_error("Attempted to define widget '%s' twice." % fullname) + self.widgets[fullname] = wo + + + def getwidget(self, w): + widget = self.widgets.get(w) + if widget == None: + gui_warning("Unknown widget: %s" % w) + return widget + + + def show(self, windowname): + self.getwidget(windowname).setVisible() + + + def command(self, cmdtext, *args): + cmd = specials_table.get(cmdtext) + if not cmd: + w, m = cmdtext.split(".") + wo = self.getwidget(w) + cmd = getattr(wo, 'x__' + m) + return cmd(*args) + + + def widget(self, wtype, wname, args): + wobj = widget_table[wtype]() + wobj.w_name = wname + + # Attributes + for key, val in args.iteritems(): + handler = "x__" + key + if hasattr(wobj, handler): + getattr(wobj, handler)(val) +# Unrecognized attributes are ignored ... + + self.addwidget(wname, wobj) + + + def widgetlist(self, wlist): + for w in wlist: + # Add simple signals + for s in w[3:]: + w[2][s] = '' + self.widget(w[0], w[1], w[2]) + + + def signal(self, source, signal, name=None, xsignal=None, convert=None): + """Enable or disable a signal. + Signal.signals is a dictionary of enabled signals. + The key is constructed from the widget name and the formal signal name. + The name of the signal which actually gets generated will be the + same as the key unless the 'name' parameter is set. See the + 'Signal' class for further details. + If 'name' is None (not ''!), the signal will be disabled. + """ + widsig = source.w_name + '*' + signal + if name == None: + s = Signal.signals.get(widsig) + if not s: + gui_error("Can't disable signal '%s' - it's not enabled" + % widsig) + s.disconnect() # Probably not necessary in qt + del(Signal.signals[widsig]) + else: + if Signal.signals.has_key(widsig): + gui_error("Signal already connected: %s" % widsig) + Signal.signals[widsig] = Signal(source, signal, name, xsignal, + convert) + + + def connect(self, signal, function): + if self.signal_dict.has_key(signal): + self.signal_dict[signal].append(function) + else: + self.signal_dict[signal] = [function] + + + def connectlist(self, *slotlist): + for s in slotlist: + self.connect(*s) + + + def disconnect(self, signal, function): + try: + l = self.signal_dict[signal] + l.remove(function) + except: + gui_error("Slot disconnection for signal '%s' failed" + % signal) + + + def sendsignal(self, name, *args): + # When there are no slots a debug message is output. + slots = self.signal_dict.get(name) + if slots: + try: + for slot in slots: + slot(*args) + except: + gui_error("Signal handling error:\n %s" + % traceback.format_exc()) + else: + debug("Unhandled signal: %s %s" % (name, repr(args))) + + + def idle_add(self, callback, *args): + self.idle_calls.append((callback, args)) + e = QtCore.QEvent(self.eno) #qt + self.postEvent(self, e) #qt + + + def timer(self, callback, period): + """Start a timer which calls the callback function on timeout. + Only if the callback returns True will the timer be retriggered. + """ + Uim.timers.append(Timer(callback, period)) + + +class Timer(QtCore.QTimer): #qt + def __init__(self, timers, callback, period): + QtCore.QTimer.__init__(self) #qt + self.x_callback = callback + self.connect(self, QtCore.SIGNAL("timeout()"), #qt + self.x_timeout) + self.start(int(period * 1000)) #qt + + def x_timeout(self): + if not self.x_callback(): + self.stop() #qt + Uim.timers.remove(self) + + + +class Signal: + """Each instance represents a single connection. + """ + signals = {} # Enabled signals + + def __init__(self, source, signal, name, xsignal, convert): + """'source' is the widget object which initiates the signal. + 'signal' is the signal name. + If 'name' is given (not empty), the signal will get this as its name, + and this name may be used for more than one connection. + Otherwise the name is built from the name of the source widget and + the signal type as 'source*signal' and this is unique. + If 'name' begins with '+' an additional argument, the source + widget name, will be inserted at the head of the argument list. + 'xsignal' is a toolkit specific signal descriptor. + 'convert' is an optional function (default None) - toolkit specific - + to perform signal argument conversions. + """ + self.widsig = '%s*%s' % (source.w_name, signal) + #+ For disconnect? + self.xsignal = xsignal + #- + self.convert = convert # Argument conversion function + self.tag = name if name else self.widsig + self.wname = source.w_name if self.tag[0] == '+' else None + if not source.connect(source, QtCore.SIGNAL(xsignal), #qt + self.signal): + gui_error("Couldn't enable signal '%s'" % self.widsig) + + def signal(self, *args): + if self.convert: + args = self.convert(*args) + if self.wname: + guiapp.sendsignal(self.tag, self.wname, *args) + else: + guiapp.sendsignal(self.tag, *args) + + def disconnect(self): + w = guiapp.getwidget(self.widsig.split('*')[0]) + w.disconnect(w, QtCore.SIGNAL(self.xsignal), self.signal) #qt + + + +#+++++++++++++++++++++++++++ +# Catch all unhandled errors. +def errorTrap(type, value, tb): + etext = "".join(traceback.format_exception(type, value, tb)) + debug(etext) + gui_error(etext, "This error could not be handled.") + +sys.excepthook = errorTrap +#--------------------------- + +widget_table = { + "DATA": DATA, + "Window": Window, + "Dialog": Dialog, + "DialogButtons": DialogButtons, + "Notebook": Notebook, + "Stack": Stack, + "Page": Page, + "Frame": Frame, + "Button": Button, + "ToggleButton": ToggleButton, + "RadioButton": RadioButton, + "CheckBox": CheckBox, + "Label": Label, + "CheckList": CheckList, + "List": List, + "OptionalFrame": OptionalFrame, + "ComboBox": ComboBox, + "ListChoice": ListChoice, + "LineEdit": LineEdit, + "TextEdit": TextEdit, + "HtmlView": HtmlView, + "SpinBox": SpinBox, + "ProgressBar": ProgressBar, +} + +specials_table = { + "textLineDialog": textLineDialog, + "infoDialog": infoDialog, + "confirmDialog": confirmDialog, + "errorDialog": gui_error, + "warningDialog": gui_warning, + "fileDialog": fileDialog, + "listDialog": listDialog, +} + +layout_table = { + "VBOX": VBOX, + "HBOX": HBOX, + "GRID": GRID, +# "+": GRIDROW, + "-": CSPAN, + "|": RSPAN, + "*": SPACE, + "VLINE": VLINE, + "HLINE": HLINE, +} + diff --git a/build_tools/l7/larch0/gui/larch.py b/build_tools/l7/larch0/gui/larch.py new file mode 100755 index 0000000..bddc78c --- /dev/null +++ b/build_tools/l7/larch0/gui/larch.py @@ -0,0 +1,38 @@ +#!/usr/bin/env python +# +# larch.py - GUI for the larch scripts +# +# (c) Copyright 2010 Michael Towers (larch42 at googlemail dot com) +# +# This file is part of the larch project. +# +# larch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# larch is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with larch; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#---------------------------------------------------------------------------- +#2010.06.27 + +import sys, os +dirname = os.path.dirname(os.path.realpath(__file__)) +sys.path.append(dirname + '/front') +sys.path.append(os.path.dirname(dirname) + '/cli') + +import controller +from mainwindow import start + +# Note that the gui module must have a reference point for relative +# paths, so the current directory must be set to the larch base directory +# before starting the gui: +os.chdir(controller.base_dir) +start() diff --git a/build_tools/l7/larch0/gui/layouts/docviewer.uim b/build_tools/l7/larch0/gui/layouts/docviewer.uim new file mode 100644 index 0000000..8e85a0f --- /dev/null +++ b/build_tools/l7/larch0/gui/layouts/docviewer.uim @@ -0,0 +1,72 @@ +# docviewer.uim - The layout for the documentation viewer widget +# +# (c) Copyright 2010 Michael Towers (larch42 at googlemail dot com) +# +# This file is part of the larch project. +# +# larch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# larch is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with larch; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#---------------------------------------------------------------------------- +# 2010.05.21 + +[ + ['Frame', 'doc:page', + { 'layout': + ['VBOX', + ['HBOX', 'doc:header', '*', 'doc:back', 'doc:forward', + 'doc:home', 'doc:parent', 'doc:hide'], + 'doc:content' + ] + } + ], + ['Label', 'doc:header', + { 'markup': ['h2', _("Documentation")] + } + ], + ['HtmlView', 'doc:content', {}], + ['Button', 'doc:hide', + { 'text': _("Hide"), + 'tt': _("Return to the larch controls"), + 'clicked': '' + }, + ], + ['Button','doc:back', + { 'icon': 'left', + 'tt': _("Go back in the viewing history"), + 'clicked': '' + }, + ], + ['Button','doc:forward', + { 'icon': 'right', + 'tt': _("Go forward in the viewing history"), + 'clicked': '' + }, + ], + + ['Button','doc:home', + { 'icon': 'reload', + 'tt': _("Reload the documentation for the current larch tab"), + 'clicked': '' + }, + ], + + ['Button','doc:parent', + { 'icon': 'up', + 'tt': _("Go to the general larch documentation index"), + 'clicked': '' + }, + ], + +] diff --git a/build_tools/l7/larch0/gui/layouts/editor.uim b/build_tools/l7/larch0/gui/layouts/editor.uim new file mode 100644 index 0000000..2338f6e --- /dev/null +++ b/build_tools/l7/larch0/gui/layouts/editor.uim @@ -0,0 +1,92 @@ +# editor.uim - The layout for the editor widget +# +# (c) Copyright 2009-2010 Michael Towers (larch42 at googlemail dot com) +# +# This file is part of the larch project. +# +# larch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# larch is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with larch; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#---------------------------------------------------------------------------- +# 2010.05.21 + +[ + ['Frame', 'edit:page', + { 'layout': + ['VBOX', + ['HBOX', 'edit:header', '*', 'edit:title'], + ['HBOX', 'edit:content', + ['VBOX', 'edit:copy', 'edit:cut', 'edit:paste', + 'edit:undo', 'edit:redo', 'edit:revert', + '*', 'edit:cancel', 'edit:ok' + ] + ] + ] + } + ], + ['Label', 'edit:header', + { 'markup': ['h2', _("Editor")] + } + ], + ['Label', 'edit:title', {}], + ['TextEdit', 'edit:content', {}], + ['Button', 'edit:ok', + { 'text': _('OK'), + 'clicked': '' + } + ], + ['Button', 'edit:cancel', + { 'text': _('Cancel'), + 'clicked': '' + } + ], + ['Button', 'edit:revert', + { 'text': _('Revert'), + 'tt': _('Restore the text to its initial/default state'), + 'clicked': '' + } + ], + ['Button', 'edit:copy', + { 'text': _('Copy'), + 'clicked': '' + } + ], + ['Button', 'edit:cut', + { 'text': _('Cut'), + 'clicked': '' + } + ], + ['Button', 'edit:paste', + { 'text': _('Paste'), + 'clicked': '' + } + ], + ['Button', 'edit:undo', + { 'text': _('Undo'), + 'clicked': '' + } + ], + ['Button', 'edit:redo', + { 'text': _('Redo'), + 'clicked': '' + } + ], + + ['DATA', 'editor_data', + { 'messages': + { 'msg_dflt': _("Editing '%s'") + } + }, + ], +] diff --git a/build_tools/l7/larch0/gui/layouts/logger.uim b/build_tools/l7/larch0/gui/layouts/logger.uim new file mode 100644 index 0000000..0ecb7bf --- /dev/null +++ b/build_tools/l7/larch0/gui/layouts/logger.uim @@ -0,0 +1,57 @@ +# logger.uim - The layout for the logging widget +# +# (c) Copyright 2010 Michael Towers (larch42 at googlemail dot com) +# +# This file is part of the larch project. +# +# larch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# larch is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with larch; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#---------------------------------------------------------------------------- +# 2010.05.22 + +[ + ['Frame', 'log:page', + { 'layout': + ['VBOX', + 'log:header', + ['HBOX', + 'log:text', + ['VBOX', 'log:clear', '*', 'log:hide'] + ] + ] + } + ], + ['Label', 'log:header', + { 'markup': ['', ['h2', _("Low-level Command Logging")], + ['p', _("Here you can follow the detailed, low-level" + " progress of the commands.")]] + } + ], + ['TextEdit', 'log:text', + { 'ro': True + } + ], + ['Button', 'log:clear', + { 'text': _("Clear"), + 'clicked': '' + } + ], + ['Button', 'log:hide', + { 'text': _("Hide"), + 'tt': _("Go back to the larch controls"), + 'clicked': '' + } + ] +] diff --git a/build_tools/l7/larch0/gui/layouts/page_installation.uim b/build_tools/l7/larch0/gui/layouts/page_installation.uim new file mode 100644 index 0000000..0949dcd --- /dev/null +++ b/build_tools/l7/larch0/gui/layouts/page_installation.uim @@ -0,0 +1,179 @@ +# page_installation.uim - The layout for the installation page +# +# (c) Copyright 2010 Michael Towers (larch42 at googlemail dot com) +# +# This file is part of the larch project. +# +# larch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# larch is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with larch; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#---------------------------------------------------------------------------- +# 2010.06.24 + +[ + ['Page', ':page_installation', + { 'layout': + ['VBOX', + ['HBOX', ':edit_profile', '*', ':pacmanops'], + '*', ':editmirrorlist', + ':settings_advanced', + 'HLINE', + ['HBOX', '*', ':install'] + ] + } + ], + # - - - - The profile editing frame + ['Frame', ':edit_profile', + { 'text': _("Edit Profile"), + 'layout': + ['VBOX', + ':addedpacks', + ':vetopacks', + ':pacmanconf', + ':repos' + ] + } + ], + ['Button', ':addedpacks', + { 'text': _("Edit 'addedpacks'"), + 'tt': _("Edit the list of packages to be installed") + }, + 'clicked' + ], + ['Button', ':vetopacks', + { 'text': _("Edit 'vetopacks'"), + 'tt': _("Edit the list of packages NOT to install") + }, + 'clicked' + ], + ['Button', ':pacmanconf', + { 'text': _("Edit pacman.conf options"), + 'tt': _("Edit pacman.conf options - not the repositories") + }, + 'clicked' + ], + ['Button', ':repos', + { 'text': _("Edit pacman.conf repositories"), + 'tt': _("Edit the repository entries for pacman.conf") + }, + 'clicked' + ], + + # - - - - The installed package tweaking frame + ['OptionalFrame', ':pacmanops', + { 'text': _("Tweak Installed Packages"), + 'layout': + ['VBOX', ':sync', ':update', ':add', ':remove'] + } + ], + ['Button', ':sync', + { 'text': _("Synchronize db"), + 'tt': _("Synchronize the pacman db on the target (pacman -Sy)") + }, + 'clicked' + ], + ['Button', ':update', + { 'text': _("Update / Add package [-U]"), + 'tt': _("Update / Add a package from a package file" + " using pacman -U") + }, + 'clicked' + ], + ['Button', ':add', + { 'text': _("Add package(s) [-S]"), + 'tt': _("Add one or more packages (space separated)" + " using pacman -S") + }, + 'clicked' + ], + ['Button', ':remove', + { 'text': _("Remove package(s) [-Rs]"), + 'tt': _("Remove one or more packages (space separated)" + " using pacman -Rs") + }, + 'clicked' + ], + + # - - - - The advanced installation options frame + ['OptionalFrame', ':settings_advanced', + { 'text': _("Advanced Installation Options"), + 'layout': ['HBOX', ':installrepos', 'VLINE,3', ':cache'] + } + ], + + ['OptionalFrame', ':installrepos', + { 'text': _("Use project repository list"), + 'tt': _("Enables use of an alternative pacman.conf" + " for installation only"), + 'layout': + ['HBOX', ':editrepolist'] + }, + 'toggled' + ], + ['Button', ':editrepolist', + { 'text': _("Edit repository list"), + 'tt': _("Edit repository list file used for installation") + }, + 'clicked' + ], + ['Button', ':editmirrorlist', + { 'text': _("Edit mirror list used for installation only"), + 'tt': _("A mirror list for the live system should be placed" + " in the overlay") + }, + 'clicked' + ], + + ['Frame', ':cache', + { 'text': _("Package Cache"), + 'layout': + ['HBOX', ':cache_show', ':cache_change'] + } + ], + ['LineEdit', ':cache_show', + { 'ro': True, + 'tt': _("The path to the (host's) package cache") + } + ], + ['Button', ':cache_change', + { 'text': _("Change"), + 'tt': _("Change the package cache path") + }, + 'clicked' + ], + + ['Button', ':install', + { 'text': _("Install"), + 'tt': _("This will start the installation to the set path") + }, + 'clicked' + ], + + ['DATA', 'install_page_data', + { 'messages': + { 'edit_pc': _("Editing pacman.conf options only"), + 'edit_pr': _("Editing pacman repositories"), + 'edit_mli': _("Editing mirror list for installation"), + 'prompt_ncp': _("Enter new package cache path:"), + 'edit_pri': _("Editing pacman repositories for installation"), + 'msg_pu': _("Package to add/update"), + 'filter_pu': _("Packages"), + 'prompt_pi': _("Enter the names of packages to install -" + "\n separated by spaces:"), + 'prompt_pr': _("Enter the names of packages to remove -" + "\n separated by spaces:"), + } + }, + ], +] diff --git a/build_tools/l7/larch0/gui/layouts/page_larchify.uim b/build_tools/l7/larch0/gui/layouts/page_larchify.uim new file mode 100644 index 0000000..df7be8b --- /dev/null +++ b/build_tools/l7/larch0/gui/layouts/page_larchify.uim @@ -0,0 +1,177 @@ +# page_larchify.uim - The layout for the larchify page +# +# (c) Copyright 2010 Michael Towers (larch42 at googlemail dot com) +# +# This file is part of the larch project. +# +# larch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# larch is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with larch; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#---------------------------------------------------------------------------- +# 2010.02.07 + +(lambda USERHEADERS: +[ + ['Page', ':page_larchify', + { 'layout': + ['VBOX', + ':larchify', + ':users', + 'HLINE', + ['HBOX', ':overlay', ':locales', ':rcconf'], + '*', + ':larchify_advanced', + 'HLINE', + ['HBOX', ':oldsquash', '*', ':build'] + ] + } + ], + # - - - - The profile editing frame + ['Label', ':larchify', + { 'markup': ['', " *** ", ['strong', _("The system to be" + " compressed must be installed and ready.")], " *** "] + } + ], + + ['Button', ':locales', + { 'text': _("Edit supported locales"), + 'tt': _("Edit the /etc/locale.gen file to select" + " supported glibc locales") + }, + 'clicked' + ], + ['Button', ':rcconf', + { 'text': _("Edit Arch configuration"), + 'tt': _("Edit the /etc/rc.conf file to configure the" + " live system") + }, + 'clicked' + ], + ['Button', ':overlay', + { 'text': _("Edit overlay"), + 'tt': _("Open a file browser on the profile's 'rootoverlay'") + }, + 'clicked' + ], + + ['OptionalFrame', ':larchify_advanced', + { 'text': _("Advanced Options"), + 'layout': + ['HBOX', ':initcpio', '*', ':oldlocales', ':ssh'] + } + ], + ['Button', ':initcpio', + { 'text': _("Edit mkinitcpio.conf"), + 'tt': _("Edit the configuration file for generating" + " the initramfs via mkinitcpio") + }, + 'clicked' + ], + ['CheckBox', ':ssh', + { 'text': _("Generate ssh keys"), + 'tt': _("The ssh host keys will be pre-generated") + }, + 'toggled' + ], + ['CheckBox', ':oldlocales', + { 'text': _("Reuse existing locales"), + 'tt': _("To save time it may be possible to reuse glibc" + " locales from a previous run") + }, +# 'toggled' + ], + + ['CheckBox', ':oldsquash', + { 'text': _("Reuse existing system.sqf"), + 'tt': _("Reuse existing system.sqf, to save time if the" + " base system hasn't changed") + }, +# 'toggled' + ], + ['Button', ':build', + { 'text': _("Larchify"), + 'tt': _("Build the main components of the larch system") + }, + 'clicked' + ], + +#Note that this should be disabled if installation directory is '/' + ['Frame', ':users', + { 'text': _("User accounts"), + 'layout': + ['VBOX', + ':utable', + ['HBOX', ':useradd', ':userdel', '*', + ':rootpwl', ':rootpwe', ':rootpwb' + ] + ] + } + ], + ['List', ':utable', + { 'selectionmode': 'Single', + 'headers': USERHEADERS, + 'compact': True, + 'tt': _("Click on a row to select, click on a selected" + " cell to edit") + }, +# 'select', + 'clicked' + ], + ['Button', ':useradd', + { 'text': _("Add user"), + 'tt': _("Create a new user-name") + }, + 'clicked' + ], + ['Button', ':userdel', + { 'text': _("Delete user"), + 'tt': _("Remove the selected user-name") + }, + 'clicked' + ], + ['Label', ':rootpwl', + { 'text': _("Root password:") + } + ], + ['LineEdit', ':rootpwe', + { 'ro': True, + 'tt': _("The unencrypted root password for the live system") + } + ], + ['Button', ':rootpwb', + { 'text': _("Change"), + 'tt': _("Enter a new password for the 'root' user") + }, + 'clicked' + ], + + + ['DATA', 'larchify_page_data', + { 'messages': + { 'uheaders': USERHEADERS, + 'rn_error': _("Renaming failed, see log"), + 'ud_error': _("Couldn't adjust user definition"), + 'def_skel': _("Default (/etc/skel)"), + 'skel_lbl': _("This folder will be copied\n" + "to build the user's home folder:"), + 'skel_ttl': _("Choose 'skel' Folder"), + 'newlogin': _("Enter login-name for new user:"), + 'newrootpw': _("Enter root password for live system:"), + } + }, + ], +] +)([_("User-Name"), _("Password"), _("Group"), + "UID", _("'skel' directory"), + _("Additional Groups"), _("Expert options")]) diff --git a/build_tools/l7/larch0/gui/layouts/page_main.uim b/build_tools/l7/larch0/gui/layouts/page_main.uim new file mode 100644 index 0000000..3ab4a9e --- /dev/null +++ b/build_tools/l7/larch0/gui/layouts/page_main.uim @@ -0,0 +1,101 @@ +# page_main.uim - The layout for the main window +# +# (c) Copyright 2010 Michael Towers (larch42 at googlemail dot com) +# +# This file is part of the larch project. +# +# larch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# larch is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with larch; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#---------------------------------------------------------------------------- +# 2010.06.26 + +[ + ['Window', ':larch', + { 'title': 'larch', 'size': '640_480', + 'icon': 'images/larchicon.png', + 'closesignal': '$$$uiclose$$$', + 'layout': + ['VBOX', + ['HBOX', + ':image', + ['VBOX', + ['HBOX', ':header', '*'], + ['HBOX', ':showlog', ':docs', '*', ':quit'], + ] + ], + ':tabs' + ] + + } + ], + + # - Header + ['Label', ':image', + { 'image': 'images/larch80.png' + } + ], + ['Label', ':header', + { 'markup': ['h1', ['color', '#c55500', ['em', 'larch '], + _("Live Arch Linux Construction Kit")]] + } + ], + ['Button', ':showlog', + { 'text': _("View Log"), + 'tt': _("This button switches to the log viewer"), + }, + 'clicked' + ], + ['Button', ':docs', + { 'text': _("Help"), + 'tt': _("This button switches to the documentation viewer"), + }, + 'clicked' + ], + ['Button', ':quit', + { 'text': _("Quit"), + 'tt': _("Stop the current action and quit the program"), + 'clicked': '$$$uiquit$$$' + }, + ], + +#TODO + # - Main widget + ['Stack', ':tabs', + { 'pages': [':notebook', 'progress:page', 'log:page', + 'doc:page', 'edit:page'] + } + ], + + # - - The main page of the Stack + ['Notebook', ':notebook', + { 'tabs': [ + [':page_settings', _("Project Settings")], + [':page_installation', _("Installation")], + [':page_larchify', _("Larchify")], + [':page_image', _("Medium Profile")], + [':page_medium', _("Make Medium")], + ] + }, + 'changed' + ], + + ['DATA', 'main_page_data', + { 'messages': + { 'authfail': _("Authentication failure"), + 'getpw': _("Enter the password to run as administrator:"), + } + }, + ], +] diff --git a/build_tools/l7/larch0/gui/layouts/page_medium.uim b/build_tools/l7/larch0/gui/layouts/page_medium.uim new file mode 100644 index 0000000..713a3c0 --- /dev/null +++ b/build_tools/l7/larch0/gui/layouts/page_medium.uim @@ -0,0 +1,271 @@ +# page_medium.uim - The layout for the medium building page +# +# (c) Copyright 2010 Michael Towers (larch42 at googlemail dot com) +# +# This file is part of the larch project. +# +# larch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# larch is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with larch; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#---------------------------------------------------------------------------- +# 2010.07.12 + +[ + ['Page', ':page_medium', + { 'layout': + ['VBOX', + ['HBOX', ':source', 'VLINE', ':bootloader'], + 'HLINE', + ['HBOX', ':destination','VLINE', ':detection'], + ['HBOX', '*', ':vlabell', ':vlabele', + ':vlabelb'], + 'HLINE', + ['HBOX', ':chroot', 'VLINE,10', + ':bootcd', '*', ':make_medium'] + ] + } + ], +# Select source: +# larch installation (default, but may be invalid), iso, cd-drive, partition + ['Frame', ':source', + { 'text': _("Select larch source"), + 'layout': + ['VBOX', + ['HBOX', ':source_larch', ':source_dev', + ':source_iso', ':source_path'], + ['HBOX', ':source_show', ':source_select'] + ] + } + ], + ['RadioButton', ':source_larch', + { 'text': _("larchified system"), + 'tt': _("Use the system prepared within the larch build" + " directory") + }, + 'toggled' + ], + ['RadioButton', ':source_dev', + { 'text': _("Device"), + 'tt': _("Use a system on a mountable device") + }, + 'toggled' + ], + ['RadioButton', ':source_iso', + { 'text': _("'iso' file"), + 'tt': _("Use a system on an 'iso' file") + }, + 'toggled' + ], + ['RadioButton', ':source_path', + { 'text': _("Path"), + 'tt': _("Use a directory within the filesystem") + }, + 'toggled' + ], + ['LineEdit', ':source_show', + { 'ro': True, + 'tt': _("The location from where the larch system will" + " be fetched") + } + ], + ['Button', ':source_select', + { 'text': _("Choose"), + 'tt': _("Select the source location") + }, + 'clicked' + ], + +#++++ + ['OptionalFrame', ':destination', + { 'text': _("Write to partition"), + 'tt': _("Don't create an 'iso' (CD/DVD), write the larch" + " system to a partition (e.g. USB-stick)"), + 'layout': + ['VBOX', + ['HBOX', ':lm2', ':larchpart', ':selectpart'], + ['GRID', ['+', ':noformat', ':nombr'], + ['+', ':nolarchboot', ':dosave']] + ] + }, + 'toggled' + ], + ['Label', ':lm2', + { 'text': _("Partition:") + } + ], + ['LineEdit', ':larchpart', + { 'ro': True, + 'tt': _("The partition to which the larch system is to" + " be installed") + } + ], + ['Button', ':selectpart', + { 'text': _("Choose"), + 'tt': _("Select the partition to receive the larch system") + }, + 'clicked' + ], + ['CheckBox', ':noformat', + { 'text': _("Don't format"), + 'tt': _("Copy the data to the partition without formatting" + " first\n(not the normal procedure, NOT RECOMMENDED!)") + }, +# 'toggled' + ], + ['CheckBox', ':nombr', + { 'text': _("Don't install the bootloader"), + 'tt': _("The bootloader will not be installed, leaving" + " the mbr untouched\n" + "(you'll need to provide some other means of booting)") + }, +# 'toggled' + ], + ['CheckBox', ':nolarchboot', + { 'text': _("Not bootable via search"), + 'tt': _("Don't create the file 'larch/larchboot':\n" + " the medium will only be bootable by uuid, label" + " or partition name") + }, + 'toggled' + ], + ['CheckBox', ':dosave', + { 'text': _("Enable session-saving"), + 'tt': _("Can override profile's 'larch/nosave' file," + " to make session-saving possible in that case too") + }, +# 'toggled' + ], +#---- + +#++++++++ + ['Frame', ':detection', + { 'text': _("Medium Detection"), + 'tt': _("Choose how the boot scripts determine where to" + " look for the larch system (ONLY ON PARTITIONED MEDIA)"), + 'layout': + ['VBOX', ':device', ':uuid', ':label', ':search'] + } + ], + ['RadioButton', ':uuid', + { 'text': _("UUID"), + 'tt': _("Use the partition's UUID to find it") + }, +# 'toggled' + ], + ['RadioButton', ':label', + { 'text': _("LABEL"), + 'tt': _("Use the partition's label to find it") + }, +# 'toggled' + ], + ['RadioButton', ':device', + { 'text': _("Partition"), + 'tt': _("Use the partition's name (/dev/sdb1, etc.) to find it") + }, +# 'toggled' + ], + ['RadioButton', ':search', + { 'text': _("Search (for larchboot)"), + 'tt': _("Test all CD/DVD devices and partitions until" + " the file 'larch/larchboot' is found") + }, + 'toggled' + ], +#-------- + +#+ + # Defaults to that of the source + ['Label', ':vlabell', + { 'text': _("Volume Label:") + } + ], + ['LineEdit', ':vlabele', + { 'ro': True, + 'tt': _("The length may not exceed 16 bytes," + " 11 for vfat(syslinux)") + } + ], + ['Button', ':vlabelb', + { 'text': _("Change"), + 'tt': _("Enter a new label for the volume, empty to use default") + }, + 'clicked' + ], +#- + +#++++ + ['Frame', ':bootloader', + { 'text': _("Bootloader"), + 'tt': _("You can choose between GRUB and" + " syslinux/isolinux as bootloader"), + 'layout': + ['VBOX', ':grub', ':syslinux'] + } + ], + ['RadioButton', ':grub', + { 'text': "GRUB", + 'tt': _("Use GRUB as bootloader") + }, + 'toggled' + ], + ['RadioButton', ':syslinux', + { 'text': "syslinux/isolinux", + 'tt': _("Use syslinux (partition) or isolinux (CD/DVD)" + " as bootloader") + }, + 'toggled' + ], +#---- + + ['CheckBox', ':chroot', + { 'text': _("Use chroot"), + 'tt': _("Use the larch installation for the build process\n" + " - the default should be alright in most cases") + }, +# 'toggled' + ], + + ['Button', ':bootcd', + { 'text': _("Create boot iso"), + 'tt': _("Create a small boot iso for this device (for" + " machines that can't boot from USB)") + }, + 'clicked' + ], + ['Button', ':make_medium', + { 'text': _("Write the larch medium"), + 'tt': _("The larch image will be written to the 'iso' file" + " or to the partition, as selected") + }, + 'clicked' + ], + + ['DATA', 'medium_page_data', + { 'messages': + { 'medium_src': _("Select source medium folder"), + 'iso_src': _("Select source iso file"), + 'iso_type': _("larch iso images"), + 'parts_t': _("Select unmounted partition"), + 'parts_src': _("larch system source:"), + 'parts_dst': _("Device to receive larch system.\n" + "WARNING: Be very careful in choosing here,\n" + "if you choose the wrong one you might\n" + "seriously damage your system!"), + 'msg_med': _("Invalid larch medium folder: %s"), + 'prompt_label': _("Volume label (clear to use default):"), + 'isopath': _("Save 'iso' to ..."), + } + }, + ], +] diff --git a/build_tools/l7/larch0/gui/layouts/page_mediumprofile.uim b/build_tools/l7/larch0/gui/layouts/page_mediumprofile.uim new file mode 100644 index 0000000..f50a20a --- /dev/null +++ b/build_tools/l7/larch0/gui/layouts/page_mediumprofile.uim @@ -0,0 +1,99 @@ +# page_mediumprofile.uim - The layout for the medium profile settings page +# +# (c) Copyright 2010 Michael Towers (larch42 at googlemail dot com) +# +# This file is part of the larch project. +# +# larch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# larch is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with larch; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#---------------------------------------------------------------------------- +# 2010.07.08 + +[ + ['Page', ':page_image', + { 'layout': + ['VBOX', + ':bootlines', + ':grubtemplate', + ':syslinuxtemplate', + ':cdroot', + '*', + ['HBOX', ':nosessionsave', '*', +# ':plabell', ':plabele', ':plabelb' + ] + ] + } + ], + ['Button', ':bootlines', + { 'text': _("Edit boot entries"), + 'tt': _("Edit the file determining the boot entries") + }, + 'clicked' + ], + ['Button', ':grubtemplate', + { 'text': _("Edit grub template"), + 'tt': _("Edit grub's configuration file," + " but not the larch boot entries") + }, + 'clicked' + ], + ['Button', ':syslinuxtemplate', + { 'text': _("Edit syslinux/isolinux template"), + 'tt': _("Edit the syslinux/isolinux configuration file," + " but not the larch boot entries") + }, + 'clicked' + ], + ['Button', ':cdroot', + { 'text': _("Edit cd-root (open in file browser)"), + 'tt': _("Open a file browser on the profile's 'cd-root'" + " folder") + }, + 'clicked' + ], +# ['Label', ':plabell', +# { 'text': _("Volume Label:") +# } +# ], +# ['LineEdit', ':plabele', +# { 'ro': True, +# 'tt': _("The length may not exceed 16 bytes," +# " 11 for vfat(syslinux)") +# } +# ], +# ['Button', ':plabelb', +# { 'text': _("Change"), +# 'tt': _("Enter a new label for the volume") +# }, +# 'clicked' +# ], + ['CheckBox', ':nosessionsave', + { 'text': _("Disable session saving"), + 'tt': _("If checked, the medium will have the file" + " 'larch/nosave',\n" + "which only has an effect on writable media.") + }, + 'toggled' + ], + + +#? +# ['DATA', 'mediumprofile_page_data', +# { 'messages': +# { 'blah': _("Blah blah"), +# } +# }, +# ], +] diff --git a/build_tools/l7/larch0/gui/layouts/page_project.uim b/build_tools/l7/larch0/gui/layouts/page_project.uim new file mode 100644 index 0000000..938c646 --- /dev/null +++ b/build_tools/l7/larch0/gui/layouts/page_project.uim @@ -0,0 +1,181 @@ +# page_project.uim - The layout for the project settings page +# +# (c) Copyright 2010 Michael Towers (larch42 at googlemail dot com) +# +# This file is part of the larch project. +# +# larch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# larch is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with larch; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#---------------------------------------------------------------------------- +# 2010.06.27 + +[ + ['Page', ':page_settings', + { 'layout': + ['VBOX', + ':settings_profile', + '*', + ':options_advanced', + '*' + ] + } + ], + # - - - - The profile selection frame + ['Frame', ':settings_profile', + { 'text': _("Profile"), + 'layout': + ['VBOX', + ['HBOX', ':choose_profile', ':choose_profile_combo', + '*', ':profile_browse'], + ['HBOX', ':profile_rename', ':profile_delete', + ':profile_save'] + ] + } + ], + ['Label', ':choose_profile', + { 'text': _("Select:"), + 'align': 'right' + } + ], + ['ComboBox', ':choose_profile_combo', + { 'width': 200, + 'tt': _("Choose a profile from those already in your" + " larch working folder") + }, + 'changed' + ], + ['Button', ':profile_browse', + { 'text': _("Browse for Profile"), + 'tt': _("Fetch a profile from the file-system") + }, + 'clicked' + ], + ['Button', ':profile_rename', + { 'text': _("Rename"), + 'tt': _("Rename the current profile") + }, + 'clicked' + ], + ['Button', ':profile_delete', + { 'text': _("Delete"), + 'tt': _("Delete an unused profile") + }, + 'clicked' + ], + ['Button', ':profile_save', + { 'text': _("Copy to ..."), + 'tt': _("Copy the current profile to somehere else") + }, + 'clicked' + ], + + # - - - - Advanced project options + ['OptionalFrame', ':options_advanced', + { 'text': _("Advanced Project Options"), + 'layout': + ['HBOX', + #['HBOX', '*', ':lplat', ':platform'], + ['GRID', + ['+', ':choose_project', ':choose_project_combo'], + ['+', ':new_project', ':project_delete'] + ], + 'VLINE,3', + ':installation_path' + ] + } + ], +# Pending better support in Arch/pacman +# ['Label', '::lplat', +# { 'text': _("Platform (processor architecture):") +# } +# ], +# ['ComboBox', ':platform', +# { 'tt': _("Which processor architecture?") +# }, +# 'changed' +# ], + ['Label', ':choose_project', + { 'text': _("Choose Existing Project:") + } + ], + ['ComboBox', ':choose_project_combo', + { 'tt': _("Choose a project from those already defined"), + 'width': 120 + }, + 'changed' + ], + ['Button', ':new_project', + { 'text': _("New Project"), + 'tt': _("Create a new project") + }, + 'clicked' + ], + ['Button', ':project_delete', + { 'text': _("Delete"), + 'tt': _("Delete a project") + }, + 'clicked' + ], + ['Frame', ':installation_path', + { 'text': _("Installation Path"), + 'layout': + ['HBOX', ':installation_path_show', + ':installation_path_change'] + } + ], + ['LineEdit', ':installation_path_show', + { 'ro': True, + 'tt': _("The root directory of the Arch installation" + " to larchify") + } + ], + ['Button', ':installation_path_change', + { 'text': _("Change"), + 'tt': _("Change the root directory of the Arch installation") + }, + 'clicked' + ], + + ['DATA', 'project_page_data', + { 'messages': + { 'file_ps': _("Select profile source folder"), + 'prompt_pr': _("Destination profile exists - replace it?"), + 'prompt_pn': _("Enter new name for current profile:"), + 'prompt_pe': _("Profile '%s' exists already"), + 'msg_pu': _("Can't rename the profile," + " it is in use by other projects"), + 'file_sp': _("Save profile folder"), + 'prompt_dr': _("Destination exists - replace it?"), + 'prompt_dp': _("Select the profile for deletion"), + 'delprof': _("Remove Profile"), + 'msg_npf': _("There are no profiles which can" + " be deleted - all are in use"), + 'msg_dpff': _("Couldn't delete profile '%s' -" + " check permissions"), + 'prompt_ip': _("An empty path here will reset to the default.\n" + " WARNING: Double check your path -\n" + " If you make a mistake here it could destroy your system!" + "\n\nEnter new installation path:"), + 'prompt_np': _("Enter name for new project:"), + 'msg_pe': _("Project '%s' already exists"), + 'prompt_pd': _("Select the project for deletion"), + 'delproj': _("Remove Project"), + 'msg_np': _("There are no projects which can be deleted"), + 'msg_npd': _("'%s' is not a profile folder"), + 'msg_piu': _("The path '%s' is already in use, not saving"), + } + }, + ], +] diff --git a/build_tools/l7/larch0/gui/layouts/progress.uim b/build_tools/l7/larch0/gui/layouts/progress.uim new file mode 100644 index 0000000..62ae9e2 --- /dev/null +++ b/build_tools/l7/larch0/gui/layouts/progress.uim @@ -0,0 +1,64 @@ +# progress.uim - The layout for the progress widget +# +# (c) Copyright 2010 Michael Towers (larch42 at googlemail dot com) +# +# This file is part of the larch project. +# +# larch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# larch is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with larch; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#---------------------------------------------------------------------------- +# 2010.05.22 + +[ + ['Frame', 'progress:page', + { 'layout': + ['VBOX', + 'progress:header', + ['HBOX', + 'progress:text', + ['VBOX', 'progress:cancel', '*', 'progress:done'] + ], + 'progress:progress' + ] + } + ], + ['Label', 'progress:header', + { 'markup': ['', ['h2', _("Processing ...")], + ['p', _("Here you can follow the detailed, low-level" + " progress of the commands.")]] + } + ], + ['TextEdit', 'progress:text', + { 'ro': True + } + ], + ['LineEdit', 'progress:progress', + { 'ro': True, + 'tt': _("An indication of the progress of the current" + " operation, if possible") + } + ], + ['Button', 'progress:cancel', + { 'text': _("Cancel"), + 'tt': _("Stop the current action"), + 'clicked': '$$$cancel$$$' + } + ], + ['Button', 'progress:done', + { 'text': _("Done"), + 'clicked': '' + } + ], +] diff --git a/build_tools/l7/larch0/gui/project.py b/build_tools/l7/larch0/gui/project.py new file mode 100644 index 0000000..f01e578 --- /dev/null +++ b/build_tools/l7/larch0/gui/project.py @@ -0,0 +1,428 @@ +# project.py - Project management +# +# (c) Copyright 2010 Michael Towers (larch42 at googlemail dot com) +# +# This file is part of the larch project. +# +# larch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# larch is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with larch; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#---------------------------------------------------------------------------- +# 2010.07.14 + +from config import * +import os, shutil, pwd +from glob import glob +from subprocess import call +from userinfo import Userinfo + +CONFIG_DIR = '.config/larch' # within the user's home directory +APP_CONF = 'app.conf' # within larch config directory +PROJECT_CONF = 'project.conf' # within project directory +PROJECT0 = 'larch-0' # default project +PROFILE0 = 'default' # default profile + +# Some default values for the project config file +DEFAULTS = { 'installation_dir' : '', + 'pacman_cache' : '/var/cache/pacman/pkg', + 'profile' : PROFILE0, + 'profile_browse_dir': '', # => use default + 'installrepo' : '', + 'medium_iso' : 'Yes', # 'Yes' | '' + 'medium_btldr' : 'syslinux', # 'grub' | 'syslinux' + 'medium_search' : 'search', # 'search' | 'uuid' | 'label' | 'device' + 'medium_label' : '', # => fetch default + 'isosavedir' : '', + 'isofile' : '', + 'bootisofile' : '', + 'bootisolabel' : '', + } + + +# Default values for the application config file +APP_DEFAULTS = { + 'project' : PROJECT0, + 'filebrowser' : 'xdg-open $', + } + + + +class ProjectManager: + def __init__(self): + add_exports( ( + ('getitem', self.getitem), + ('getbool', self.getbool), + ('setitem', self.setitem), + ('setbool', self.setbool), + ('get_projects', self.list_projects), + ('get_profiles', self.list_profiles), + ('get_installation_dir', self.get_ipath), + ('set_installation_dir', self.set_ipath), + ('testmedium', self.testmedium), + ('set_project', self.set_projectname), + ('get_project', self.get_projectname), + ('delete_project', self.delete_project), + ('delete_profile', self.delete_profile), + ('list_free_projects', self.list_free_projects), + ('list_free_profiles', self.list_free_profiles), + ('get_new_profile', self.get_new_profile), + ('rename_profile', self.rename_profile), + ('can_rename_profile', self.can_rename_profile), + ('save_profile', self.save_profile), + ('get_profile', self.get_profile), + ('set_profile', self.set_profile), + ('get_profile_bookmarks', self.get_profile_bookmarks), + ('get_mediumlabel', self.get_mediumlabel), + ('set_mediumlabel', self.set_mediumlabel), + ('getisosavedir', self.getisosavedir), + ('getisofile', self.getisofile), + ('getbootisofile', self.getbootisofile), + ('getbootisolabel', self.getbootisolabel), + ('newUserinfo', self.newUserinfo), + ('allusers', self.allusers), + ('getuserinfo', self.getuserinfo), + ('newuser', self.newuser), + ('userset', self.userset), + ('deluser', self.deluser), + ('listskels', self.listskels), + ('saveusers', self.saveusers)) + ) + + + def init(self): + self.projects_base = os.path.join(os.environ['HOME'], CONFIG_DIR) + self.profiles_dir = os.path.join(self.projects_base, 'myprofiles') + # Ensure the presence of the larch default project folder + dpf = '%s/p_%s' % (self.projects_base, PROJECT0) + if not os.path.isdir(dpf): + os.makedirs(dpf) + # Ensure the presence of the profiles folder and the 'default' profile + if not os.path.isdir(self.profiles_dir): + os.mkdir(self.profiles_dir) + self.default_profile_dir = os.path.join(self.profiles_dir, PROFILE0) + if not os.path.isdir(self.default_profile_dir): + call(['cp', '-a', base_dir + '/profiles/'+ PROFILE0, + self.profiles_dir]) + + # The application configs + self.aconfig_file = os.path.join(self.projects_base, APP_CONF) + self.aconfig = self.getconfig(self.aconfig_file) + + # The project-specific configs + self.set_projectname(self.appget('project')) + + + def get_projectname(self): + return (True, self.project_name) + + def set_projectname(self, name): + self.project_dir = os.path.join(self.projects_base, 'p_' + name) + plist = self.list_projects()[1] + if name not in plist: + os.mkdir(self.project_dir) + + self.pconfig_file = os.path.join(self.project_dir, PROJECT_CONF) + self.pconfig = self.getconfig(self.pconfig_file) + self.profile_name = self.get('profile') + + self.profile_path = os.path.join(self.profiles_dir, self.profile_name) + self.appset('project', name) + self.project_name = name + return (True, None) + + def delete_project(self, name): + # This should probably be run as root, in case the build directory + # is inside it ... cross that bridge when we come to it! + r = call(['rm', '-r', '--interactive=never', + os.path.join(self.projects_base, 'p_' + name)]) + return (True, r == 0) + + + def delete_profile(self, name): + r = call(['rm', '-r', '--interactive=never', + os.path.join(self.profiles_dir, name)]) + return (True, r == 0) + + + def get_profile(self): + return (True, self.profile_name) + + def set_profile(self, name): + self.set('profile', name) + self.profile_name = name + self.profile_path = os.path.join(self.profiles_dir, self.profile_name) + return (True, None) + + + def rename_profile(self, name): + os.rename(self.profile_path, os.path.join(self.profiles_dir, name)) + self.set_profile(name) + return (True, None) + + + def get_new_profile(self, src): + if not os.path.isfile(src + '/addedpacks'): + return (True, False) + pname = os.path.basename(src) + dst = os.path.join(self.profiles_dir, pname) + call(['rm', '-rf', dst]) + shutil.copytree(src, dst) + self.set_profile(pname) + return (True, True) + + + def get_profile_bookmarks(self): + return (True, ((self.projects_base + '/myprofiles', + _("Working Profiles")), + (base_dir + '/profiles', _("Examples")), + ('/', _("File-system")) + )) + + +# What about not allowing changes to the default profile? +# That would mean also no renaming? +# One would have to copy a profile into the project before going +# any further ... +# Is it right to share profiles between projects? (Probably) + +#+++++++++++++++++++++++++++++++++++++++++++++++ +### A very simple configuration file handler + def getconfig(self, filepath): + cfg = {} + if os.path.isfile(filepath): + fh = open(filepath) + for line in fh: + ls = line.split('=', 1) + if len(ls) > 1: + cfg[ls[0].strip()] = ls[1].strip() + return cfg + + + def saveconfig(self, filepath, config): + fh = open(filepath, 'w') + ci = config.items() + ci.sort() + for kv in ci: + fh.write('%s = %s\n' % kv) + fh.close() +### +#----------------------------------------------- + + def list_projects(self): + projects = [p[2:] for p in os.listdir(self.projects_base) + if p.startswith('p_')] + projects.sort() + return (True, projects) + + + def list_free_projects(self): + """This returns a list of projects which are free for (e.g.) deletion. + """ + plist = self.list_projects()[1] + plist.remove(PROJECT0) # this one is not 'free' + if self.project_name in plist: + plist.remove(self.project_name) + return (True, plist) + + + def list_profiles(self): + profiles = [d for d in os.listdir(self.profiles_dir) if + os.path.isfile(os.path.join(self.profiles_dir, d, 'addedpacks'))] + profiles.sort() + return (True, profiles) + + + def list_free_profiles(self): + """This returns a list of profiles which are not in use by any project. + """ + plist = self.list_profiles()[1] + plist.remove(PROFILE0) # this one is not 'free' + for project in self.list_projects()[1]: + cfg = self.getconfig(os.path.join(self.projects_base, + 'p_' + project, PROJECT_CONF)) + p = cfg.get('profile') + if p in plist: + plist.remove(p) + return (True, plist) + + + def can_rename_profile(self): + if self.profile_name == PROFILE0: + return (True, False) + for project in self.list_projects()[1]: + if project != self.project_name: + cfg = self.getconfig(os.path.join(self.projects_base, + 'p_' + project, PROJECT_CONF)) + if self.profile_name == cfg.get('profile'): + return (True, False) + return (True, True) + + + def save_profile(self, path, force): + #path = os.path.join(path, self.profile_name) + if os.path.exists(path): + if force: + call(['rm', '-rf', path]) + elif os.path.isfile(os.path.join(path, addedpacks)): + # This is an existing profile + return (True, False) + else: + # This location is otherwise in use + return (True, None) + shutil.copytree(self.profile_path, path) + return (True, True) + + + def appget(self, item): + """Read an entry in the application configuration. + """ + v = self.aconfig.get(item) + if v: + return v + elif APP_DEFAULTS.has_key(item): + return APP_DEFAULTS[item] + debug("Unknown application configuration option: %s" % item) + assert False + + def appset(self, item, value): + """Set an entry in the application configuration. + """ + self.aconfig[item] = value.strip() + self.saveconfig(self.aconfig_file, self.aconfig) + + + def getitem(self, item): + return (True, self.get(item)) + + def getbool(self, item): + return (True, bool(self.get(item))) + + def setitem(self, item, value): + self.set(item, value) + return (True, None) + + def setbool(self, item, on): + self.set(item, 'Yes' if on else '') + return (True, None) + + + def get(self, item): + """Read an entry in the project configuration. + """ + v = self.pconfig.get(item) + if v: + return v + elif DEFAULTS.has_key(item): + return DEFAULTS[item] + debug("Unknown configuration option: %s" % item) + assert False + + def set(self, item, value): + """Set an entry in the project configuration. + """ + self.pconfig[item] = value.strip() + self.saveconfig(self.pconfig_file, self.pconfig) +# return True + + + def get_ipath(self): + ip = self.get('installation_dir') + if not ip: + ip = self.set_ipath('')[1] + return (True, ip) + + def set_ipath(self, path): + path = path.strip() + if path: + path = '/' + path.strip('/') + else: + path = os.environ['HOME'] + '/larch_build' + self.set('installation_dir', path) + return (True, path) + + + def testmedium(self): + ipath = self.get_ipath()[1] + path = ipath + CHROOT_DIR_MEDIUM + bl = [] + nosave = False + ok = os.path.isfile(path + '/larch/system.sqf') + if ok: + if os.path.isfile(ipath + GRUBDIR + '/stage2_eltorito'): + bl.append('grub') + if os.path.isfile(ipath + SYSLINUXDIR + '/isolinux.bin'): + bl.append('syslinux') + if os.path.isfile(self.profile_path + '/nosave'): + nosave = True + return (True, (path, ok, bl, nosave)) + + + def newUserinfo(self): + self.userInfo = Userinfo(self.profile_path) + return (True, None) + + def allusers(self): + return (True, self.userInfo.allusers()) + + def getuserinfo(self, user, fields): + return (True, self.userInfo.userinfo(user, fields)) + + def newuser(self, user): + return (True, self.userInfo.newuser(user)) + + def saveusers(self): + return (True, self.userInfo.saveusers()) + + def userset(self, uname, field, text): + self.userInfo.userset(uname, field, text) + return (True, None) + + def deluser(self, user): + return (True, self.userInfo.deluser(user)) + + def listskels(self): + return (True, glob(self.profile_path + '/skel_*')) + + + def get_mediumlabel(self): + l = self.get('medium_label') + return (True, l if l else LABEL) + + def set_mediumlabel(self, l): + if len(l) > 16: + l = l[:16] + self.set('medium_label', l) + return self.get_mediumlabel() + + + def getisosavedir(self): + d = self.get('isosavedir') + return (True, d if d else os.environ['HOME']) + + def getisofile(self): + f = self.get('isofile') + return (True, f if f else ISOFILE) + + def getbootisofile(self): + f = self.get('bootisofile') + return (True, f if f else BOOTISO) + + def getbootisolabel(self): + l = self.get('bootisolabel') + return (True, l if l else ISOLABEL) + + + +import __builtin__ +__builtin__.project_manager = ProjectManager() diff --git a/build_tools/l7/larch0/i18n/ca/LC_MESSAGES/ca.po b/build_tools/l7/larch0/i18n/ca/LC_MESSAGES/ca.po new file mode 100644 index 0000000..8bbb192 --- /dev/null +++ b/build_tools/l7/larch0/i18n/ca/LC_MESSAGES/ca.po @@ -0,0 +1,1218 @@ +# Translation of larch.po to Catalan
+# Copyright (C) 2010, This file is part of LARCH
+# This file is distributed under the license LGPL version 2 or later.
+#
+# Manuel Tortosa Moreno <manutortosa@gmail.com>, 2010.
+# The Catalan KDE translation Team
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"POT-Creation-Date: 2010-02-10 20:05+CET\n"
+"PO-Revision-Date: 2010-03-20 21:39+0100\n"
+"Last-Translator: Manuel Tortosa Moreno <manutortosa@gmail.com>\n"
+"Language-Team: Catalan <kde-i18n-ca@kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: ENCODING\n"
+"Generated-By: pygettext.py 1.5\n"
+"X-Generator: Lokalize 1.0\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: larch.py:203
+msgid "Please enter root password"
+msgstr "Introduïu la contrasenya de root"
+
+#: larch.py:215
+msgid "Incorrect root password"
+msgstr "Contrasenya de root incorrecta"
+
+#: larch.py:218
+msgid "No root password, cancelling operation"
+msgstr "No hi ha contrasenya de root, s'està cancel·lant"
+
+#: larch.py:234
+msgid "Supershell couldn't be started"
+msgstr "No s'ha pogut inicial Supershell"
+
+#: larch.py:321
+msgid "Enter '%s' application ('$' for path argument):"
+msgstr "Introduïu '%s' aplicació ('$' per argument de path):"
+
+#: larch.py:429
+msgid "Editing '%s'"
+msgstr "S'està editant '%s'"
+
+#: larch.py:463
+msgid "Platform error, installed system is %s"
+msgstr "Error de plataforma, el sistema instal·lat és %s"
+
+#: larch.py:468
+msgid "No installed system found"
+msgstr "No s'ha trobat el sistema instal·lat"
+
+#: larch.py:518
+msgid "Couldn't read file '%s'"
+msgstr "No s'ha pogut llegir el fitxer '%s'"
+
+#: larch.py:527
+msgid "Couldn't save file '%s'"
+msgstr "No s'ha pogut desar el fitxer '%s'"
+
+#: larch.py:531
+msgid "CONFIG ERROR"
+msgstr "ERROR DE CONFIGURACIÓ"
+
+#: larch.py:535
+msgid "BUILD ERROR"
+msgstr "ERROR DE CONSTRUCCIÓ"
+
+#: larch.py:539
+msgid "FATAL ERROR"
+msgstr "ERROR FATAL"
+
+#: larch.py:547
+msgid "This error could not be handled"
+msgstr "Aquest error no es pot gestionar"
+
+#: larch.py:623
+msgid ""
+" Please see '%s/%s'\n"
+" for usage information.\n"
+msgstr ""
+" Mireu '%s/%s'\n"
+" per informació d'ús.\n"
+
+#: larch.py:641
+msgid "ERROR: Unsupported option - '%s'\n"
+msgstr "ERROR: Opció no implementada - '%s'\n"
+
+#: larch.py:642
+msgid "Start without arguments or with '--pyqt' to start pyqt gui.\n"
+msgstr "Inicieu sense arguments o amb '--pyqt' per iniciar la igu pygt.\n"
+
+#: larch.py:643
+msgid "The command line interface is started with '-c':\n"
+msgstr "La interfície de línia d'ordres s'inicia amb '-c':\n"
+
+#: modules/base.py:89
+msgid "No pacman executable found"
+msgstr "No s'ha trobat l'executable del pacman"
+
+#: modules/base.py:117
+msgid "Unknown platform: '%s'"
+msgstr "Plataforma desconeguda: '%s'"
+
+#: modules/base.py:156
+msgid "Unknown configuration option: %s\n"
+msgstr "Opció de configuració desconeguda: %s\n"
+
+#: modules/base.py:216
+msgid "No name for new profile"
+msgstr "No hi ha cap nom pel nou perfil"
+
+#: modules/base.py:220
+msgid "Profile '%s' already exists"
+msgstr "El perfil '%s' ja existeix"
+
+#: modules/base.py:234
+msgid "Profile '%s' exists already."
+msgstr "El perfil '%s' ja existeix."
+
+#: modules/build.py:58
+msgid ""
+"Building a larch live medium from the running system is\n"
+"an error prone process. Changes to the running system\n"
+"made while running this function may be only partially\n"
+"incorporated into the compressed system images.\n"
+"\n"
+"Do you wish to continue?"
+msgstr ""
+"La construcció d'un suport live des del sistema actual en execució és\n"
+"un procés propens a errors. Els canvis fets al sistema en execució\n"
+"mentre s'executa aquesta funció poden ser incorporats només\n"
+"parcialment a les imatges comprimides de sistema.\n"
+"\n"
+"Voleu continuar?"
+
+#: modules/build.py:112
+msgid "Squashing system.sqf failed"
+msgstr "Ha fallat l'esquaix de system.sgf"
+
+#: modules/build.py:181
+msgid "Squashing mods.sqf failed"
+msgstr "Ha fallat l'esquaix de mods.sqf"
+
+#: modules/build.py:200
+msgid "No squashfs module found\n"
+msgstr "No s'ha trobat el mòdul squashfs\n"
+
+#: modules/build.py:210
+msgid "No aufs or unionfs module found\n"
+msgstr "No s'ha trobat el mòdul aufs o unionfs\n"
+
+#: modules/build.py:214
+msgid "Package '%s' is needed by larch systems\n"
+msgstr "El paquet '%s' és necessari pels sistemes larch\n"
+
+#: modules/build.py:217
+msgid ""
+"Without package 'syslinux' you will not be able\n"
+"to create syslinux or isolinux booting media\n"
+msgstr ""
+"Sense el paquet 'syslinux' no podreu crear\n"
+"suports arrencables syslinux o isolinux\n"
+
+#: modules/build.py:221
+msgid ""
+"Without package 'cdrkit' (or 'cdrtools') you will\n"
+"not be able to create CD/DVD media\n"
+msgstr ""
+"Sense el paquet 'cdrkit' (o 'cdrtools') no podreu\n"
+"crear suports CD/DVD\n"
+
+#: modules/build.py:225
+msgid ""
+"Without package 'eject' you will have problems\n"
+"using CD/DVD media\n"
+msgstr ""
+"Sense el paquet 'eject' tindreu problemes\n"
+"usant suports CD/DVD\n"
+
+#: modules/build.py:229
+msgid ""
+"WARNING:\n"
+"%s\n"
+" Continue building?"
+msgstr ""
+"AVÍS:\n"
+"%s\n"
+" Continuo la construcció?"
+
+#: modules/build.py:235
+msgid ""
+"ERROR:\n"
+"%s"
+msgstr ""
+"ERROR:\n"
+"%s"
+
+#: modules/build.py:262
+msgid ""
+"Problem running %s:\n"
+" %s"
+msgstr ""
+"Problema en executar %s:\n"
+" %s"
+
+#: modules/build.py:267
+msgid ""
+"More than one kernel found:\n"
+" %s"
+msgstr ""
+"S'ha trobat més d'un kernel:\n"
+" %s"
+
+#: modules/build.py:271
+msgid "No kernel found"
+msgstr "No s'ha trobat cap kernel"
+
+#: modules/build.py:279
+msgid "More than one set of kernel modules in %s"
+msgstr "Hi ha més d'un grup de mòduls del kernel a %s"
+
+#: modules/build.py:305
+msgid ""
+"WARNING:\n"
+" You seem to have installed a package containing modules\n"
+"which aren't compatible with your kernel (see log).\n"
+"Please check that this won't cause problems.\n"
+"Maybe you need the corresponding package for your kernel?\n"
+"\n"
+" Continue building?"
+msgstr ""
+"AVÍS:\n"
+" Sembla que heu instal·lat un paquet que conté mòduls\n"
+"que no són compatibles amb el vostre kernel (mireu el registre).\n"
+"Comproveu que això no causi problemes.\n"
+"Potser necessiteu el paquet corresponent pel vostre kernel?\n"
+"\n"
+" Continuo la construcció?"
+
+#: modules/build.py:314
+msgid "Couldn't find kernel modules"
+msgstr "No s'han pogut trobar els mòduls del kernel"
+
+#: modules/build.py:334
+msgid "Couldn't find usable mkinitcpio preset: %s"
+msgstr "No s'ha trobat cap pre-arranjament usable de mkinitcpio: %s"
+
+#: modules/buildpage.py:47
+msgid "The system to be compressed must be installed and ready."
+msgstr "El sistema a comprimir ha d'estar instal·lat i llest."
+
+#: modules/buildpage.py:48
+msgid "Edit supported locales"
+msgstr "Edita els locales implementats"
+
+#: modules/buildpage.py:49
+msgid "Edit the /etc/locale.gen file to select supported glibc locales"
+msgstr "Edita el fitxer /etc/locale.gen per seleccionar els locales de glibc implementats"
+
+#: modules/buildpage.py:50
+msgid "Edit Arch configuration file (/etc/rc.conf)"
+msgstr "Edita el fitxer de configuració d'Arch (/etc/rc.conf)"
+
+#: modules/buildpage.py:51
+msgid "Edit the /etc/rc.conf file to configure the live system"
+msgstr "Edita el fitxer /etc/rc.conf per configurar el sistema live"
+
+#: modules/buildpage.py:53 modules/installpage.py:60 modules/projectpage.py:68
+msgid "Advanced Options"
+msgstr "Opcions avançades"
+
+#: modules/buildpage.py:54
+msgid "Edit mkinitcpio.conf"
+msgstr "Edita el mkinitcpio.conf"
+
+#: modules/buildpage.py:55
+msgid "Edit the configuration file for generating the initramfs via mkinitcpio"
+msgstr "Edita el fitxer de configuració per generar initramfs via mkinitcpio"
+
+#: modules/buildpage.py:56
+msgid "Edit overlay (open in file browser)"
+msgstr "Edita la capa (obre al gestor de fitxers)"
+
+#: modules/buildpage.py:57
+msgid "Open a file browser on the profile's 'rootoverlay'"
+msgstr "Obre un gestor de fitxers al 'rootoverlay' del perfil"
+
+#: modules/buildpage.py:58
+msgid "Generate ssh keys"
+msgstr "Genera les claus ssh"
+
+#: modules/buildpage.py:59
+msgid "Enables pre-generation of ssh keys"
+msgstr "Habilita la pre-generació de claus ssh"
+
+#: modules/buildpage.py:60
+msgid "Reuse existing system.sqf"
+msgstr "Reutilitza un system.sqf existent"
+
+#: modules/buildpage.py:61
+msgid "Reuse existing system.sqf, to save time if the base system hasn't changed"
+msgstr ""
+"Reutilitza un system.sqf existent, per estalviar temps si la base del sistema no ha canviat"
+
+#: modules/buildpage.py:62 modules/gui.py:65
+msgid "Larchify"
+msgstr "Larchifica"
+
+#: modules/buildpage.py:63
+msgid "Build the main components of the larch system"
+msgstr "Construeix els components principals del sistema larch"
+
+#: modules/console.py:91
+msgid "Information"
+msgstr "Informació"
+
+#: modules/console.py:94
+msgid "Press <Enter> to continue"
+msgstr "Premeu <Retorn> per continuar"
+
+#: modules/console.py:100
+msgid "Confirmation"
+msgstr "Confirmació"
+
+#: modules/console.py:105 modules/console.py:204
+msgid "Yes"
+msgstr "Sí"
+
+#: modules/console.py:105 modules/console.py:205
+msgid "No"
+msgstr "No"
+
+#: modules/console.py:113
+msgid "Input Required"
+msgstr "Cal una entrada"
+
+#: modules/console.py:135
+msgid "ERROR"
+msgstr "ERROR"
+
+#: modules/console.py:148
+msgid "Unknown command: %s"
+msgstr "Ordre desconeguda: %s"
+
+#: modules/console.py:206
+msgid "Project Name:"
+msgstr "Nom del projecte:"
+
+#: modules/console.py:207
+msgid "Profile:"
+msgstr "Perfil:"
+
+#: modules/console.py:208 modules/projectpage.py:79
+msgid "Installation Path:"
+msgstr "Camí d'instal·lació:"
+
+#: modules/console.py:209
+msgid "Working Directory:"
+msgstr "Directori de treball:"
+
+#: modules/console.py:210
+msgid "Platform:"
+msgstr "Plataforma:"
+
+#: modules/console.py:211
+msgid "Installation Mirror:"
+msgstr "Mirall de la instal·lació:"
+
+#: modules/console.py:212
+msgid "--- use mirror:"
+msgstr "--- usa mirall:"
+
+#: modules/console.py:213
+msgid "Use Project Mirrorlist:"
+msgstr "Usa Mirrorlist del projecte:"
+
+#: modules/console.py:214
+msgid "Bootloader:"
+msgstr "Arrencador:"
+
+#: modules/console.py:215
+msgid "Medium Detection:"
+msgstr "Detecció del suport:"
+
+#: modules/console.py:216
+msgid "Medium Label:"
+msgstr "Etiqueta del suport:"
+
+#: modules/console.py:217
+msgid "iso 'application ID':"
+msgstr "'ID d'aplicació' de la iso:"
+
+#: modules/console.py:218
+msgid "iso 'publisher':"
+msgstr "'Publicador' de la iso:"
+
+#: modules/console.py:219 modules/installpage.py:75
+msgid "Package Cache:"
+msgstr "Memòria cau de paquets:"
+
+#: modules/console.py:222
+msgid "Projects:\n"
+msgstr "Projectes:\n"
+
+#: modules/console.py:227
+msgid "Profiles (in %s):\n"
+msgstr "Perfils (a %s):\n"
+
+#: modules/console.py:232
+msgid "Example Profiles (in %s):\n"
+msgstr "Perfils d'exemple (a %s):\n"
+
+#: modules/console.py:237
+msgid "Available Partitions:\n"
+msgstr "Particions disponibles:\n"
+
+#: modules/console.py:247 modules/console.py:256
+msgid "Unknown project name: '%s'"
+msgstr "Nom de projecte desconegut: '%s'"
+
+#: modules/console.py:264 modules/console.py:276
+msgid "Unknown profile name: '%s'"
+msgstr "Nom de perfil desconegut: '%s'"
+
+#: modules/console.py:288
+msgid "Available platforms: %s"
+msgstr "Plataformes disponibles: %s"
+
+#: modules/console.py:314
+msgid "Invalid bootloader: %s"
+msgstr "Arrencador invàlid: %s"
+
+#: modules/gui.py:49
+msgid "<em>larch</em> Live Arch Linux Construction Kit"
+msgstr "<em>larch</em> Joc de construcció Live d'Arch Linux"
+
+#: modules/gui.py:50
+msgid "View Log"
+msgstr "Mostra el registre"
+
+#: modules/gui.py:51
+msgid "This button switches to the log viewer"
+msgstr "Aquest botó commuta al visor del registre"
+
+#: modules/gui.py:52
+msgid "Help"
+msgstr "Ajuda"
+
+#: modules/gui.py:53
+msgid "This button switches to the documentation viewer"
+msgstr "Aquest botó commuta al visor de documentació"
+
+#: modules/gui.py:54
+msgid "Quit"
+msgstr "Abandona"
+
+#: modules/gui.py:55
+msgid "Stop the current action and quit the program"
+msgstr "Atura l'acció actual i abandona el programa"
+
+#: modules/gui.py:63
+msgid "Project Settings"
+msgstr "Arranjament del projecte"
+
+#: modules/gui.py:64
+msgid "Installation"
+msgstr "Instal·lació"
+
+#: modules/gui.py:66
+msgid "Prepare Medium"
+msgstr "Prepara el suport"
+
+#: modules/gui.py:67
+msgid "Installation Tweaks"
+msgstr "Ajustaments de la instal·lació"
+
+#: modules/gui.py:113
+msgid "Processing ..."
+msgstr "S'està processant ..."
+
+#: modules/gui.py:114 modules/gui.py:162
+msgid "Here you can follow the detailed, low-level progress of the commands."
+msgstr "Aquí podeu seguir el procés detallat de les ordres a baix nivell"
+
+#: modules/gui.py:118
+msgid "An indication of the progress of the current operation, if possible"
+msgstr "Una indicació del progrés de l'operació actual, si és possible"
+
+#: modules/gui.py:119 modules/gui.py:254
+msgid "Cancel"
+msgstr "Cancel·la"
+
+#: modules/gui.py:120
+msgid "Stop the current action"
+msgstr "Atura l'acció actual"
+
+#: modules/gui.py:121
+msgid "Done"
+msgstr "Fet"
+
+#: modules/gui.py:161
+msgid "Low-level Command Logging"
+msgstr "Registre d'ordres de baix nivell"
+
+#: modules/gui.py:165
+msgid "Clear"
+msgstr "Neteja"
+
+#: modules/gui.py:166 modules/gui.py:196
+msgid "Hide"
+msgstr "Oculta"
+
+#: modules/gui.py:167 modules/gui.py:197
+msgid "Go back to the larch controls"
+msgstr "Torna enrere als controls de larch"
+
+#: modules/gui.py:194
+msgid "Documentation"
+msgstr "Documentació"
+
+#: modules/gui.py:199
+msgid "Go back in the viewing history"
+msgstr "Torna enrere al visor de la història"
+
+#: modules/gui.py:201
+msgid "Go forward in the viewing history"
+msgstr "Vés endavant al control de la història"
+
+#: modules/gui.py:203
+msgid "Reload the documentation for the current larch tab"
+msgstr "Recarrega la documentació de la pestanya actual de larch"
+
+#: modules/gui.py:205
+msgid "Go to the general larch documentation index"
+msgstr "Vés a l'index general de la documentació de larch"
+
+#: modules/gui.py:250
+msgid "Editor"
+msgstr "Editor"
+
+#: modules/gui.py:253
+msgid "OK"
+msgstr "Bé"
+
+#: modules/gui.py:255
+msgid "Revert"
+msgstr "Reverteix"
+
+#: modules/gui.py:256
+msgid "Restore the text to its initial state"
+msgstr "Restaura el text al seu estat inicial"
+
+#: modules/gui.py:257
+msgid "Copy"
+msgstr "Copia"
+
+#: modules/gui.py:258
+msgid "Cut"
+msgstr "Talla"
+
+#: modules/gui.py:259
+msgid "Paste"
+msgstr "Enganxa"
+
+#: modules/gui.py:260
+msgid "Undo"
+msgstr "Desfés"
+
+#: modules/gui.py:261
+msgid "Redo"
+msgstr "Refés"
+
+#: modules/installation.py:111 modules/installpage.py:135
+msgid "No 'mirrorlist' file found"
+msgstr "No s'ha trobat el fitxer 'mirrorlist'"
+
+#: modules/installation.py:156
+msgid "Couldn't write to the installation path (%s)."
+msgstr "No es pot escriure al camí de la instal·lació (%s)."
+
+#: modules/installation.py:160
+msgid "The installation path (%s) is mounted 'nodev'."
+msgstr "El camí de la instal·lació (%s) està muntat com a 'nodev'."
+
+#: modules/installation.py:168
+msgid "The installation path (%s) is mounted 'noexec'."
+msgstr "El camí de la instal·lació (%s) està muntat com a 'noexec'."
+
+#: modules/installation.py:213
+msgid "Package installation failed"
+msgstr "Ha fallat la instal·lació de paquets"
+
+#: modules/installation.py:247
+msgid "Couldn't synchronize pacman database (pacman -Sy)"
+msgstr "No s'ha pogut sincronitzar la base de dades del pacman (pacman -Sy)"
+
+#: modules/installpage.py:50
+msgid "Edit Profile"
+msgstr "Edita el perfil"
+
+#: modules/installpage.py:51
+msgid "Edit 'addedpacks'"
+msgstr "Edita 'addedpacks'"
+
+#: modules/installpage.py:52
+msgid "Edit the list of packages to be installed"
+msgstr "Edita la llista de paquets a instal·lar"
+
+#: modules/installpage.py:53
+msgid "Edit 'baseveto'"
+msgstr "Edita 'baseveto'"
+
+#: modules/installpage.py:54
+msgid "Edit the list of base packages NOT to install"
+msgstr "Edita la llista de paquets base que NO s'han d'instal·lar"
+
+#: modules/installpage.py:55
+msgid "Edit pacman.conf options"
+msgstr "Edita les opcions de pacman.conf"
+
+#: modules/installpage.py:56
+msgid "Edit pacman.conf options - not the repositories"
+msgstr "Edita les opcions de pacman.conf - no els repositoris"
+
+#: modules/installpage.py:57
+msgid "Edit pacman.conf repositories"
+msgstr "Edita els repositoris de pacman.conf"
+
+#: modules/installpage.py:58
+msgid "Edit the repository entries for pacman.conf"
+msgstr "Edita les entrades de repositoris del pacman.conf"
+
+#: modules/installpage.py:62
+msgid "Use project mirrorlist"
+msgstr "Usa mirrorlist del projecte"
+
+#: modules/installpage.py:63
+msgid "Enables use of the mirrorlist file saved in the working directory, for installation only"
+msgstr ""
+"Habilita l'ús del fitxer mirrorlist desat al directori de treball, només per la instal·lació"
+
+#: modules/installpage.py:64
+msgid "Edit project mirrorlist"
+msgstr "Edita el mirrorlist del projecte"
+
+#: modules/installpage.py:65
+msgid "Edit mirrorlist in working directory"
+msgstr "Edita el mirrorlist al directori de treball"
+
+#: modules/installpage.py:67
+msgid "Use special mirror for installation"
+msgstr "Usa mirall especial per la instal·lació"
+
+#: modules/installpage.py:68
+msgid "Allows a specific (e.g. local) mirror to be used just for the installation"
+msgstr "Permet usar un mirall específic (p.ex. local) només per a la instal·lació"
+
+#: modules/installpage.py:69
+msgid "URL:"
+msgstr "URL:"
+
+#: modules/installpage.py:71
+msgid "The url of the installation mirror"
+msgstr "L'url del mirall d'instal·lació"
+
+#: modules/installpage.py:72 modules/installpage.py:78
+#: modules/mediumpage.py:81 modules/mediumpage.py:87 modules/mediumpage.py:112
+#: modules/projectpage.py:82
+msgid "Change"
+msgstr "Canvia"
+
+#: modules/installpage.py:73
+msgid "Change the installation mirror path"
+msgstr "Canvia el camí del mirall d'instal·lació"
+
+#: modules/installpage.py:77
+msgid "The path to the (host's) package cache"
+msgstr "El camí (de la màquina) a la cau de paquets"
+
+#: modules/installpage.py:79
+msgid "Change the package cache path"
+msgstr "Canvia el camí a la cau de paquets"
+
+#: modules/installpage.py:81
+msgid "Install"
+msgstr "Instal·la"
+
+#: modules/installpage.py:82
+msgid "This will start the installation to the set path"
+msgstr "Això iniciarà la instal·lació al camí establert"
+
+#: modules/installpage.py:119
+msgid "Editing pacman.conf options only"
+msgstr "S'estan editant només les opcions de pacman.conf"
+
+#: modules/installpage.py:125
+msgid "Editing pacman.conf repositories only"
+msgstr "S'estan editant només els repositoris de pacman.conf"
+
+#: modules/installpage.py:137
+msgid "Editing mirrorlist: Uncomment ONE entry"
+msgstr "S'està editant el mirrorlist: descomenteu UNA entrada"
+
+#: modules/installpage.py:153
+msgid "Enter new local mirror path:"
+msgstr "Introduïu un camí nou pel mirall local:"
+
+#: modules/installpage.py:159
+msgid "You must specify a URL, with protocol, e.g. 'file:///a/b/c'"
+msgstr "Heu d'especificar un URL, amb protocol, p.ex. 'file:///a/b/c'"
+
+#: modules/installpage.py:173
+msgid "Enter new package cache path:"
+msgstr "Introduïu el nou camí de la cau de paquets:"
+
+#: modules/medium.py:82
+msgid "Can't boot to label - no label supplied"
+msgstr "No es pot arrencar a una etiqueta - no s'ha proporcionat"
+
+#: modules/medium.py:208
+msgid "Couldn't format %s"
+msgstr "No s'ha pogut formatar %s"
+
+#: modules/medium.py:265
+msgid "GRUB is at present only supported on extN"
+msgstr "Actualment GRUB només està implementat a extN"
+
+#: modules/medium.py:271
+msgid "syslinux is only supported on vfat"
+msgstr "syslinux només està implementat a vfat"
+
+#: modules/medium.py:287 modules/medium.py:320
+msgid "Couldn't mount larch partition, %s"
+msgstr "No s'ha pogut muntar la partició, %s"
+
+#: modules/medium.py:341
+msgid "'syslinux' must be installed."
+msgstr "S'ha d'instal·lar 'syslinux'."
+
+#: modules/medium.py:345
+msgid "Device has neither a /boot nor a /syslinux directory"
+msgstr "El dispositiu no té cap directori /boot ni /syslinux"
+
+#: modules/medium.py:359
+msgid ""
+"%s not found -\n"
+" 'syslinux' must be installed on live system"
+msgstr ""
+"No s'ha trobat %s -\n"
+" s'ha d'instal·lar 'syslinux' al sistema live"
+
+#: modules/medium.py:375
+msgid "Your larch iso, %s, was successfully created"
+msgstr "La vostra iso larch, %s, s'ha creat correctament"
+
+#: modules/mediumpage.py:73
+msgid "Partition (disk / USB-stick)"
+msgstr "Partició (disc / memòria USB)"
+
+#: modules/mediumpage.py:75
+msgid "You can choose installation to iso (for CD/DVD) or a partition (e.g. USB-stick)"
+msgstr ""
+"Podeu seleccionar la instal·lació de la iso (per CD/DVD) o una partició (p.ex. memòria USB)"
+
+#: modules/mediumpage.py:78
+msgid "Application ID:"
+msgstr "ID de l'aplicació:"
+
+#: modules/mediumpage.py:80
+msgid "The text passed to mkisofs with the -A option"
+msgstr "El text passat a mkisofs amb l'opció -A"
+
+#: modules/mediumpage.py:82
+msgid "Change the application ID of the iso"
+msgstr "Canvia l'ID de l'aplicació de la iso"
+
+#: modules/mediumpage.py:84
+msgid "Publisher:"
+msgstr "Editor:"
+
+#: modules/mediumpage.py:86
+msgid "The text passed to mkisofs with the -publisher option"
+msgstr "El text passat a mkisofs amb l'opció -publisher"
+
+#: modules/mediumpage.py:88
+msgid "Change the publisher data of the iso"
+msgstr "Canvia les dades de l'editor de la iso"
+
+#: modules/mediumpage.py:90
+msgid "Partition:"
+msgstr "Partició:"
+
+#: modules/mediumpage.py:92
+msgid "The partition to which the larch system is to be installed"
+msgstr "La partició en la que s'ha d'instal·lar el sistema larch"
+
+#: modules/mediumpage.py:93
+msgid "Choose"
+msgstr "Seleccioneu"
+
+#: modules/mediumpage.py:94
+msgid "Select the partition to receive the larch system"
+msgstr "Seleccioneu la partició que ha de rebre el sistema larch"
+
+#: modules/mediumpage.py:95
+msgid "Don't format"
+msgstr "No formatis"
+
+#: modules/mediumpage.py:96
+msgid "Copy the data to the partition without formatting first (not the normal procedure)"
+msgstr "Copia les dades a la partició sense formatar primer (no és el procediment normal)"
+
+#: modules/mediumpage.py:98
+msgid "Medium Detection"
+msgstr "Detecció de suport"
+
+#: modules/mediumpage.py:99
+msgid "Choose how the boot scripts determine where to look for the larch system"
+msgstr "Seleccioneu com determinen els scripts d¡arrencada a on s'ha de cercar el sistema larch"
+
+#: modules/mediumpage.py:101
+msgid "Use the partition's UUID to find it"
+msgstr "Usa l'UUID de la partició per trobar-lo"
+
+#: modules/mediumpage.py:103
+msgid "Use the partition's label to find it"
+msgstr "Usa l'etiqueta de la partició per trobar-lo"
+
+#: modules/mediumpage.py:104
+msgid "Partition"
+msgstr "Partició"
+
+#: modules/mediumpage.py:105
+msgid "Use the partition name (/dev/sdb1, etc.)"
+msgstr "Usa el nom de la partició (/dev/sdb1, etc.)"
+
+#: modules/mediumpage.py:106
+msgid "Search (for larchboot)"
+msgstr "Cerca (larchboot)"
+
+#: modules/mediumpage.py:107
+msgid "Test all CD/DVD devices and partitions until the file larch/larchboot is found"
+msgstr ""
+"Comprova tots els dispositius de CD/DVD i les particions fins que es trobi el fitxer "
+"larch/larchboot"
+
+#: modules/mediumpage.py:109
+msgid "Medium label:"
+msgstr "Etiqueta del suport:"
+
+#: modules/mediumpage.py:111
+msgid "The label that the partition will be given"
+msgstr "L'etiqueta que proporcionarà la partició"
+
+#: modules/mediumpage.py:113
+msgid "Change the label"
+msgstr "Canvia l'etiqueta"
+
+#: modules/mediumpage.py:115
+msgid "Enable session saving"
+msgstr "Habilita el desat de la sessió"
+
+#: modules/mediumpage.py:116
+msgid "If checked, the medium will have the file 'larch/save'"
+msgstr "Si està marcat, el suport tindrà el fitxer 'larch/save'"
+
+#: modules/mediumpage.py:118
+msgid "Bootloader"
+msgstr "Arrencador"
+
+#: modules/mediumpage.py:119
+msgid "You can choose between GRUB and syslinux/isolinux as bootloader"
+msgstr "Podeu seleccionar entre GRUB i syslinux/isolinux com a arrencador"
+
+#: modules/mediumpage.py:121
+msgid "Use GRUB as bootloader"
+msgstr "Usa GRUB com a arrencador"
+
+#: modules/mediumpage.py:123
+msgid "Use syslinux (partition) or isolinux (CD/DVD) as bootloader"
+msgstr "Usa syslinux (partició) o isolinux (CD/DVD) com a arrencador"
+
+#: modules/mediumpage.py:124 modules/mediumpage.py:238
+msgid "None"
+msgstr "Cap"
+
+#: modules/mediumpage.py:125
+msgid "Don't install a bootloader (you'll need to provide some means of booting)"
+msgstr "No instal·lis un arrencador (necessitareu proporcionar algun tipus d'arrencada)"
+
+#: modules/mediumpage.py:127
+msgid "Bootable via search"
+msgstr "Arrencable via cerca"
+
+#: modules/mediumpage.py:128
+msgid "Create the file larch/larchboot to mark the medium as a bootable larch system"
+msgstr "Crea el fitxer larch/larchboot per marcar el suport con a sistema larch arrencable"
+
+#: modules/mediumpage.py:130
+msgid "Edit boot entries"
+msgstr "Edita les entrades de l'arrencada"
+
+#: modules/mediumpage.py:131
+msgid "Edit the file determining the boot entries"
+msgstr "Edita el fitxer que determina les entrades de l'arrencada"
+
+#: modules/mediumpage.py:132 modules/mediumpage.py:133
+msgid "Edit grub template"
+msgstr "Edita la plantilla de grub"
+
+#: modules/mediumpage.py:134 modules/mediumpage.py:135
+msgid "Edit syslinux/isolinux template"
+msgstr "Edita la plantilla de syslinux/isolinux"
+
+#: modules/mediumpage.py:137
+msgid "Create boot iso"
+msgstr "Crea iso d'arrencada"
+
+#: modules/mediumpage.py:138
+msgid "Create a small boot iso for this system (for machines that can't boot from USB)"
+msgstr ""
+"Crea una petita iso d'arrencada per a aquest sistema (per a màquines que no poden arrencar "
+"des de USB) "
+
+#: modules/mediumpage.py:139
+msgid "Create larch medium"
+msgstr "Crea suport larch"
+
+#: modules/mediumpage.py:140
+msgid "Create the larch iso or set up the chosen partition"
+msgstr "Crea la iso larch o arranja la partició seleccionada"
+
+#: modules/mediumpage.py:142
+msgid ""
+"Edit cd-root\n"
+"(open in file browser)"
+msgstr ""
+"Edita cd-root\n"
+"(obre al gestor de fitxers)"
+
+#: modules/mediumpage.py:143
+msgid "Open a file browser on the profile's 'cd-root' folder"
+msgstr "Obre un gestor de fitxers a la carpeta 'cd-root' del perfil"
+
+#: modules/mediumpage.py:169
+msgid "Choose Partition"
+msgstr "Selecciona la partició"
+
+#: modules/mediumpage.py:171
+msgid ""
+"BE CAREFUL - if you select the wrong\n"
+" partition you might well destroy your system!\n"
+"\n"
+"Select the partition to receive the larch system:"
+msgstr ""
+"ANEU AMB COMPTE - si seleccione una partició\n"
+" errònia podeu malmetre el sistema!\n"
+"\n"
+"Seleccioneu la partició que ha de rebre el sistema larch:"
+
+#: modules/mediumpage.py:258
+msgid "Editing larch boot entries"
+msgstr "Edició de les entrades d'arrencada de larch"
+
+#: modules/mediumpage.py:269
+msgid "Editing grub template"
+msgstr "Edició de la plantilla de grub"
+
+#: modules/mediumpage.py:281
+msgid "Editing syslinux/isolinux template"
+msgstr "Edició de la plantilla de syslinux/isolinux"
+
+#: modules/mediumpage.py:286
+msgid "Enter new label for the boot medium:"
+msgstr "Introduïu una nova etiqueta per l'arrencada del suport:"
+
+#: modules/mediumpage.py:300
+msgid "Enter new application ID for the boot iso:"
+msgstr "Introduïu un nou ID de l'aplicació per l'arrencada de la iso:"
+
+#: modules/mediumpage.py:314
+msgid "Enter new publisher for the boot iso:"
+msgstr "Introduïu un nou editor per l'arrencada de la iso;"
+
+#: modules/mediumpage.py:371
+msgid "No partition selected for larch"
+msgstr "No s'ha seleccionat cap partició per a larch"
+
+#: modules/mediumpage.py:394
+msgid ""
+"The partition containing the larch live system\n"
+"must be specifed."
+msgstr ""
+"S'ha d'especificar la partició que conté el\n"
+"sistema larch live."
+
+#: modules/projectpage.py:50
+msgid "Profile"
+msgstr "Perfil"
+
+#: modules/projectpage.py:52
+msgid "Choose Existing Profile:"
+msgstr "Seleccioneu un perfil existent:"
+
+#: modules/projectpage.py:54
+msgid "New Profile:"
+msgstr "Perfil nou:"
+
+#: modules/projectpage.py:56
+msgid "Choose a profile from those already in your larch working folder"
+msgstr "Seleccioneu un perfil dels que ja teniu a la carpeta de treball de larch"
+
+#: modules/projectpage.py:57
+msgid "Browse for Profile"
+msgstr "Navega per cercar perfil"
+
+#: modules/projectpage.py:58
+msgid "Fetch a profile from the file-system"
+msgstr "Recupera un perfil del sistema de fitxers"
+
+#: modules/projectpage.py:59
+msgid "Rename"
+msgstr "Reanomena"
+
+#: modules/projectpage.py:60
+msgid "Rename the current profile"
+msgstr "Reanomena el perfil actual"
+
+#: modules/projectpage.py:61 modules/projectpage.py:76
+msgid "Delete"
+msgstr "Esborra"
+
+#: modules/projectpage.py:62
+msgid "Delete the current profile"
+msgstr "Esborra el perfil actual"
+
+#: modules/projectpage.py:64
+msgid "Platform (processor architecture):"
+msgstr "Plataforma (arquitectura del processador):"
+
+#: modules/projectpage.py:66
+msgid "Which processor architecture?"
+msgstr "Quina arquitectura del processador?"
+
+#: modules/projectpage.py:70
+msgid "Project"
+msgstr "Projecte"
+
+#: modules/projectpage.py:71
+msgid "Choose Existing Project:"
+msgstr "Seleccioneu un projecte existent:"
+
+#: modules/projectpage.py:73
+msgid "Choose a project from those already defined"
+msgstr "Seleccioneu un dels projectes que ja teniu definits"
+
+#: modules/projectpage.py:74
+msgid "New Project"
+msgstr "Nou projecte"
+
+#: modules/projectpage.py:75
+msgid "Create a new project"
+msgstr "Crea un nou projecte"
+
+#: modules/projectpage.py:77
+msgid "Delete the current project"
+msgstr "Esborra el projecte actual"
+
+#: modules/projectpage.py:81
+msgid "The root directory of the Arch installation to larchify"
+msgstr "El directori arrel de la instal·lació Arch a larchificar"
+
+#: modules/projectpage.py:83
+msgid "Change the root directory of the Arch installation"
+msgstr "Canvia el directori arrel de la instal·lació Arch"
+
+#: modules/projectpage.py:113
+msgid "Profile directory mismatch: '%s' vs. '%s'"
+msgstr "Incoherència del director del perfil: '%s' contra '%s'"
+
+#: modules/projectpage.py:120
+msgid "Profile '%s' doesn't exist"
+msgstr "El perfil '%s' no existeix"
+
+#: modules/projectpage.py:164
+msgid "Select profile source folder and enter new name"
+msgstr "Seleccioneu la carpeta font del perfil i introduïu un nom nou"
+
+#: modules/projectpage.py:165
+msgid "New name:"
+msgstr "Nou nom:"
+
+#: modules/projectpage.py:182
+msgid "Enter new name for current profile:"
+msgstr "Introduïu un nou nom per perfil actual:"
+
+#: modules/projectpage.py:207
+msgid "Do you really want to delete profile '%s'?"
+msgstr "Realment voleu esborrar el perfil '%s'?"
+
+#: modules/projectpage.py:217
+msgid "Profile '%s' in use by project '%s"
+msgstr "El perfil '%s' s'usa pel projecte '%s'"
+
+#: modules/projectpage.py:228
+msgid ""
+"WARNING: Double check your path -\n"
+" If you make a mistake here it could destroy your system!\n"
+"\n"
+"Enter new installation path:"
+msgstr ""
+"ATENCIÓ: comproveu amb cura el camí -\n"
+" si cometeu un error aquí malmetreu el sistema!\n"
+"\n"
+"Introduïu un nou camí d'instal·lació:"
+
+#: modules/projectpage.py:250
+msgid ""
+"Your selected installation path (%s) contains unexpected items:\n"
+" %s\n"
+"\n"
+"Is that really ok?"
+msgstr ""
+"El camí d'instal·lació seleccionat (%s) conté elements inesperats:\n"
+" %s\n"
+"\n"
+"És realment correcte?"
+
+#: modules/projectpage.py:265
+msgid "Enter name for new project:"
+msgstr "Introduïu un nom pel nou projecte:"
+
+#: modules/projectpage.py:273
+msgid "Project '%s' already exists."
+msgstr "El projecte '%s' ja existeix."
+
+#: modules/projectpage.py:281
+msgid "Can't delete the only existing project."
+msgstr "No es pot eliminar l'únic projecte existent."
+
+#: modules/projectpage.py:289
+msgid "Do you really want to delete project '%s'?"
+msgstr "Realment voleu eliminar el projecte '%s'? "
+
+#: modules/tweakpage.py:45
+msgid "Package Management"
+msgstr "Gestió de paquets"
+
+#: modules/tweakpage.py:46
+msgid "Synchronize db"
+msgstr "Sincronitza la bd"
+
+#: modules/tweakpage.py:47
+msgid "Synchronize the pacman db on the target (pacman -Sy)"
+msgstr "Sincronitza la bd de pacman al destí (pacman -Sy)"
+
+#: modules/tweakpage.py:48
+msgid "Update / Add package [-U]"
+msgstr "Actualitza/afegeix paquet [-U]"
+
+#: modules/tweakpage.py:49
+msgid "Update / Add a package from a package file using pacman -U"
+msgstr "Actualitza / afegeix un paquet des d'un fitxer de paquet usant pacman -U"
+
+#: modules/tweakpage.py:50
+msgid "Add package(s) [-S]"
+msgstr "Afegeix paquet(s) [-S]"
+
+#: modules/tweakpage.py:51
+msgid "Add one or more packages (space separated) using pacman -S"
+msgstr "Afegeix un o més paquets (separats per espais) usant pacman -S"
+
+#: modules/tweakpage.py:52
+msgid "Remove package(s) [-Rs]"
+msgstr "Elimina paquet(s) [-Rs]"
+
+#: modules/tweakpage.py:53
+msgid "Remove one or more packages (space separated) using pacman -Rs"
+msgstr "Elimina un o més paquets (separats per espais) usant pacman -Rs"
+
+#: modules/tweakpage.py:72
+msgid "Package to add/update"
+msgstr "Paquet a afegir/actualitzar"
+
+#: modules/tweakpage.py:74
+msgid "Packages"
+msgstr "Paquets"
+
+#: modules/tweakpage.py:81
+msgid "Error during package update."
+msgstr "Error en actualitzar paquets."
+
+#: modules/tweakpage.py:86
+msgid ""
+"Enter the names of packages to install -\n"
+" separated by spaces:"
+msgstr ""
+"Introduïu els noms dels paquets a instal·lar -\n"
+" separats per espais:"
+
+#: modules/tweakpage.py:95
+msgid "Error during package installation."
+msgstr "Error en instal·lar paquets."
+
+#: modules/tweakpage.py:100
+msgid ""
+"Enter the names of packages to remove -\n"
+" separated by spaces:"
+msgstr ""
+"Introduïu els noms dels paquets a eliminar -\n"
+" separats per espais:"
+
+#: modules/tweakpage.py:109
+msgid "Error during package removal."
+msgstr "Error en eliminar paquets."
+
+
diff --git a/build_tools/l7/larch0/i18n/ca/LC_MESSAGES/larch.mo b/build_tools/l7/larch0/i18n/ca/LC_MESSAGES/larch.mo Binary files differnew file mode 100644 index 0000000..0d49d0f --- /dev/null +++ b/build_tools/l7/larch0/i18n/ca/LC_MESSAGES/larch.mo diff --git a/build_tools/l7/larch0/i18n/de/LC_MESSAGES/de.po b/build_tools/l7/larch0/i18n/de/LC_MESSAGES/de.po new file mode 100644 index 0000000..02802fe --- /dev/null +++ b/build_tools/l7/larch0/i18n/de/LC_MESSAGES/de.po @@ -0,0 +1,1588 @@ +# German translations for larch-7.2 package. +# Copyright (C) 2009-2010 Michael Towers +# Automatically generated, 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: larch 7\n" +"POT-Creation-Date: 2010-07-14 15:19+CEST\n" +"PO-Revision-Date: 2009-08-04 22:10+CEST\n" +"Last-Translator: Automatically generated\n" +"Language-Team: mt\n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: cli/archin.py:39 +msgid "Operations on '/' are not supported ..." +msgstr "Ungültiger Basis-Ordner: '/'" + +#: cli/archin.py:40 +msgid "Install Arch to '%s'?" +msgstr "Arch zu '%s' installieren?" + +#: cli/archin.py:63 +msgid "No pacman executable found" +msgstr "Ausführbare Datei 'pacman' nicht gefunden" + +#: cli/archin.py:157 +msgid "Couldn't write to the installation path (%s)" +msgstr "Konnte nicht im Installationsordner (%s) abspeichern." + +#: cli/archin.py:161 +msgid "The installation path (%s) is mounted 'nodev'." +msgstr "Installationspfad (%s) 'nodev' gemountet" + +#: cli/archin.py:168 +msgid "The installation path (%s) is mounted 'noexec'." +msgstr "Installationspfad (%s) 'noexec' gemountet" + +#: cli/archin.py:193 +msgid "Package installation failed" +msgstr "Paket-Installation fehlgeschlagen" + +#: cli/archin.py:200 +msgid "Arch installation completed" +msgstr "Arch-Installation ist fertig" + +#: cli/archin.py:207 +msgid "No '%s' file" +msgstr "Datei '%s' existiert nicht" + +#: cli/archin.py:221 +msgid "Invalid package file include: %s" +msgstr "Ungültiges Paket-Datei-'include': %s" + +#: cli/archin.py:253 +msgid "Couldn't synchronize pacman database (pacman -Sy)" +msgstr "pacman-Datenbank konnte nicht aktualisiert werden (pacman -Sy)" + +#: cli/archin.py:313 +msgid "usage: %%prog [options] %s [packages]" +msgstr "Anwendung: %%prog [Optionen] %s [Pakete]" + +#: cli/archin.py:318 cli/larchify.py:558 +msgid "Profile: 'user:profile-name' or path to profile directory" +msgstr "Profil: 'Benutzer:Profilname' oder Pfad zum Profilordner" + +#: cli/archin.py:321 cli/larchify.py:561 +msgid "Path to directory to be larchified (default %s)" +msgstr "Pfad zum zu larchifizierenden Ordner (Voreinstellung %s)" + +#: cli/archin.py:324 cli/boot_iso.py:119 cli/larchify.py:564 +#: cli/live_iso.py:113 cli/live_part.py:162 +msgid "Run as a slave from a controlling program (e.g. from a gui)" +msgstr "Als Dienst (Unterprozess) (z.B. vom gui) ausführen" + +#: cli/archin.py:327 cli/boot_iso.py:122 cli/larchify.py:567 +#: cli/live_iso.py:116 cli/live_part.py:165 +msgid "Suppress output messages, except errors (no effect if -s specified)" +msgstr "" +"Meldungen, außer Fehler, unterdrücken (ohne Wirkung, wenn -s angegeben)" + +#: cli/archin.py:332 cli/boot_iso.py:126 cli/larchify.py:575 +#: cli/live_iso.py:120 cli/live_part.py:169 +msgid "Don't ask for confirmation" +msgstr "Weiterfahren ohne um Bestätigung zu bitten" + +#: cli/archin.py:336 +msgid "" +"Supply a substitute repository list (pacman.conf.repos) for the installation " +"only" +msgstr "" +"Ersatz-Paketquellenliste (pacman.conf.repos) nur für die Installation angeben" + +#: cli/archin.py:340 +msgid "pacman cache directory (default /var/cache/pacman/pkg)" +msgstr "pacman Cache-Ordner (Voreinstellung /var/cache/pacman/pkg)" + +#: cli/archin.py:343 +msgid "Don't show pacman's progress bar" +msgstr "pacman-Fortschrittbalken unterdrücken" + +#: cli/archin.py:355 +msgid "You must specify which operation to perform:\n" +msgstr "Die auszuführende Operation muss angegeben werden:\n" + +#: cli/archin.py:360 cli/boot_iso.py:144 cli/larchify.py:581 +#: cli/live_iso.py:150 cli/live_part.py:216 +msgid "This application must be run as root" +msgstr "Diese Anwendung muss als 'root' ausgeführt werden" + +#: cli/archin.py:369 +msgid "Invalid operation: '%s'\n" +msgstr "Ungültiger Befehl:' %s'\n" + +#: cli/backend.py:66 +msgid "" +"larch (%s) seems to be running already.\n" +"If you are absolutely sure this is not the case,\n" +"you may continue. Otherwise you should cancel.\n" +"\n" +"Shall I continue?" +msgstr "" +"larch (%s) scheint schon aktiv zu sein.\n" +"Wenn du wirklich sicher bist, " +"dass das nicht der Fall ist,\ndarfst du fortfahren. Sonst abbrechen.\n" +"\n" +"Fortfahren?" + +#: cli/backend.py:115 +msgid "The backend reported %d failed calls, you may want to investigate" +msgstr "" +"%d Aufrufe schlugen im Backend fehl, eine Untersuchung könnte sich lohnen" + +#: cli/backend.py:138 +msgid "_yes|_no" +msgstr "_ja|_nein" + +#: cli/backend.py:176 +msgid "Something went wrong:\n" +msgstr "Irgendetwas schlug fehl:\n" + +#: cli/backend.py:304 +msgid "Invalid profile: %s" +msgstr "Ungültiges larch-Profil: %s" + +#: cli/backend.py:307 +msgid "Invalid profile folder: %s" +msgstr "Ungültiger Profilordner': %s" + +#: cli/backend.py:425 +msgid "Couldn't read file: %s" +msgstr "Konnte Datei '%s' nicht lesen" + +#: cli/boot_iso.py:45 cli/live_part.py:49 +msgid "Invalid device: %s" +msgstr "Ungültiges 'Laufwerk': %s" + +#: cli/boot_iso.py:82 cli/live_iso.py:81 +msgid "iso build failed" +msgstr "iso-Erstellung schlug fehl" + +#: cli/boot_iso.py:87 cli/live_iso.py:90 +msgid "%s was successfully created" +msgstr "Dein larch-iso, %s, wurde erfolgreich erstellt" + +#: cli/boot_iso.py:96 cli/live_part.py:147 +msgid "usage: %prog [options] partition (e.g. sdb1)" +msgstr "Anwendung: %prog [Optionen] Partition (z.B. sdb1)" + +#: cli/boot_iso.py:101 cli/live_iso.py:130 +msgid "" +"Specify the output file (default '%s'). It will be generated to the current " +"directory." +msgstr "" +"Name der zu erstellenden Datei (Voreinstellung '%s'). Sie wird imaktuellen " +"Arbeitsordner erstellt." + +#: cli/boot_iso.py:105 cli/live_iso.py:134 +msgid "Set current directory, so that the 'iso' can be placed there" +msgstr "" +"Aktuellen Arbeitsordner setzen, damit die 'iso'-Datei dort erstellt werden " +"kann" + +#: cli/boot_iso.py:109 cli/live_part.py:173 +msgid "Method for boot partition detection: %s (default: label)" +msgstr "Ansatz zur Suche nach der Boot-Partition: %s (Voreinstellung: label)" + +#: cli/boot_iso.py:112 cli/live_part.py:176 +msgid "Use the syslinux bootloader (the default is GRUB)" +msgstr "syslinux-Bootlader verwenden (Voreinstellung ist GRUB)" + +#: cli/boot_iso.py:117 cli/live_iso.py:111 cli/live_part.py:160 +msgid "Path to larchified directory (default %s)" +msgstr "Pfad zum larchifizierten Ordner (Voreinstellung %s)" + +#: cli/boot_iso.py:130 +msgid "Volume label for boot iso (default %s)" +msgstr "'Volume-Label' für Boot-iso (Voreinstellung %s)" + +#: cli/boot_iso.py:134 +msgid "Use chroot for build" +msgstr "'chroot' verwenden" + +#: cli/boot_iso.py:139 +msgid "You must specify the source partition\n" +msgstr "Die Quellpartition muss angegeben werden\n" + +#: cli/larchify.py:47 +msgid "" +"File '%s' doesn't exist:\n" +" '%s' not an Arch installation?" +msgstr "" +"Datei '%s' existiert nicht:\n" +" '%s' etwa keine Arch-Installation?" + +#: cli/larchify.py:55 +msgid "" +"Building a larch live medium from the running system is\n" +"an error prone process. Changes to the running system\n" +"made while running this function may be only partially\n" +"incorporated into the compressed system images.\n" +"\n" +"Do you wish to continue?" +msgstr "" +"Die Konstruktion eines larch-live-Mediums vom laufenden System kann\n" +"zu Fehlern führen. Änderungen am laufenden System, die während\n" +"der Ausführung dieser Funktion auftreten, werden vielleicht nur\n" +"teilweise in die komprimierten Systemabbildungen übernommen.\n" +"\n" +"Fortfahren?" + +#: cli/larchify.py:136 +msgid "Squashing system.sqf failed" +msgstr "Komprimierung der system.sqf-Datei ist fehlgeschlagen" + +#: cli/larchify.py:227 +msgid "Build customization script failed" +msgstr "Skript zur Anpassung der Konstruktion schlug fehl" + +#: cli/larchify.py:250 +msgid "Squashing mods.sqf failed" +msgstr "Komprimierung der mods.sqf-Datei ist fehlgeschlagen" + +#: cli/larchify.py:256 +msgid "larchify-process completed" +msgstr "Larchifizierung abgeschlossen" + +#: cli/larchify.py:360 +msgid "%d user account operation(s) failed" +msgstr "%d Benutzerkonto-Operation(en) schlug(en) fehl" + +#: cli/larchify.py:381 +msgid "No squashfs module found\n" +msgstr "Kein squashfs-Modul wurde gefunden\n" + +#: cli/larchify.py:393 +msgid "No aufs or unionfs module found\n" +msgstr "Kein aufs- oder unionfs-Modul wurde gefunden\n" + +#: cli/larchify.py:397 +msgid "Package '%s' is needed by larch systems\n" +msgstr "larch-Systeme brauchen das Paket '%s'\n" + +#: cli/larchify.py:400 +msgid "" +"Without package 'syslinux' you will not be able\n" +"to create syslinux or isolinux booting media\n" +msgstr "" +"Das Paket 'syslinux' ist für die Herstellung\n" +"syslinux und isolinux Boot-Medien notwendig\n" + +#: cli/larchify.py:404 +msgid "" +"Without package 'cdrkit' (or 'cdrtools') you will\n" +"not be able to create CD/DVD media\n" +msgstr "" +"Das Paket 'cdrkit' (oder 'cdrtools') ist für die\n" +"Herstellung CD/DVD-Medien notwendig\n" + +#: cli/larchify.py:408 +msgid "" +"Without package 'eject' you will have problems\n" +"using CD/DVD media\n" +msgstr "" +"Das Paket 'eject' ist beim Einsatz CD/DVD-Boot-Medien\n" +"sehr sinnvoll\n" + +#: cli/larchify.py:412 +msgid "" +"WARNING:\n" +"%s\n" +" Continue building?" +msgstr "" +"WARNUNG:\n" +"%s\n" +" Verfahren fortsetzen?" + +#: cli/larchify.py:418 +msgid "" +"ERROR:\n" +"%s" +msgstr "" +"FEHLER:\n" +"%s" + +#: cli/larchify.py:444 +msgid "" +"Problem running %s:\n" +" %s" +msgstr "" +"Problem beim Ausführen von %s:\n" +" %s" + +#: cli/larchify.py:448 +msgid "" +"More than one kernel found:\n" +" %s" +msgstr "" +"Mehr als ein Kernel gefunden:\n" +" %s" + +#: cli/larchify.py:451 +msgid "No kernel found" +msgstr "Kein Kernel gefunden" + +#: cli/larchify.py:459 +msgid "More than one set of kernel modules in %s" +msgstr "Module von mehr als einem Kernel in %s gefunden" + +#: cli/larchify.py:485 +msgid "" +"WARNING:\n" +" You seem to have installed a package containing modules\n" +"which aren't compatible with your kernel (see log).\n" +"Please check that this won't cause problems.\n" +"Maybe you need the corresponding package for your kernel?\n" +"\n" +" Continue building?" +msgstr "" +"WARNUNG:\n" +" Es ist anscheinend ein Paket installiert worden, das Kernel-Module\n" +"enthält, die mit dem installierten Kernel nicht kompatibel sind\n" +"(siehe Protokoll).\n" +"Bitte überprüfen, ob dadurch Probleme entstehen.\n" +"Vielleicht müsste das entsprechende Paket für den vorhandenen Kernel\n" +"installiert werden?\n" +"\n" +" Verfahren fortsetzen?" + +#: cli/larchify.py:494 +msgid "Couldn't find kernel modules" +msgstr "Kernel-Module nicht gefunden" + +#: cli/larchify.py:513 +msgid "Couldn't find usable mkinitcpio preset: %s" +msgstr "Brauchbare mkinitcpio-preset-Datei nicht gefunden: %s" + +#: cli/larchify.py:554 cli/live_iso.py:99 +msgid "usage: %prog [options]" +msgstr "Anwendung: %prog [Optionen]" + +#: cli/larchify.py:570 +msgid "Reuse previously generated system.sqf" +msgstr "Vorhandenes system.sqf verwenden" + +#: cli/larchify.py:573 +msgid "Reuse previously generated locales" +msgstr "Vorhandene 'locales' wiederverwenden" + +#: cli/live_iso.py:85 +msgid "Couldn't perform 'isohybrid' operation on larch 'iso' (Not Critical!)" +msgstr "'isohybrid' schlug fehl (nicht kritisch)" + +#: cli/live_iso.py:103 cli/live_part.py:152 +msgid "" +"Profile: 'user:profile-name' or path to profile directory (conflicts with -S)" +msgstr "" +"Profil: 'Benutzer:Profilname' oder Pfad zum Profilordner (nicht möglich mit -" +"S)" + +#: cli/live_iso.py:107 cli/live_part.py:156 +msgid "" +"Source: path to larch medium image (conflicts with -p). It can also be a " +"device ('/dev/...') or an 'iso' file." +msgstr "" +"Quelle: Pfad zum larch-Medium (nicht möglich mit -p). Es könnte auch ein " +"'Gerät' ('/dev/---') oder eine 'iso'-Datei sein." + +#: cli/live_iso.py:123 +msgid "Use the isolinux bootloader (the default is GRUB)" +msgstr "Den isolinux-Bootlader verwenden (Voreinstellung ist GRUB)" + +#: cli/live_iso.py:127 +msgid "Volume label for iso (default '%s')" +msgstr "Volume-Label für iso (Voreinstellung '%s')" + +#: cli/live_iso.py:138 cli/live_part.py:200 +msgid "Use chroot for build (default when -S not specified)" +msgstr "chroot verwenden (die Voreinstellung, wenn kein -S angegeben)" + +#: cli/live_iso.py:141 cli/live_part.py:203 +msgid "Don't use chroot for build (default when -S specified)" +msgstr "chroot nicht verwenden (die Voreinstellung, wenn -S angegeben)" + +#: cli/live_iso.py:145 +msgid "Test source medium only (used by gui)" +msgstr "Nur Quellmedium testen (die gui verwendet diese Funktion)" + +#: cli/live_part.py:70 +msgid "Couldn't format %s" +msgstr "Konnte %s nicht formatieren" + +#: cli/live_part.py:80 +msgid "Couldn't get format information for %s" +msgstr "Konnte Format von %s nicht herausfinden" + +#: cli/live_part.py:84 +msgid "syslinux is only supported on vfat" +msgstr "syslinux steht nur auf vfat zur Verfügung" + +#: cli/live_part.py:86 +msgid "GRUB is at present only supported on extN" +msgstr "GRUB steht zur Zeit nur auf extN zur Verfügung" + +#: cli/live_part.py:98 +msgid "Couldn't mount larch partition, %s" +msgstr "larch-Partition, %s, konnte nicht gemountet werden" + +#: cli/live_part.py:118 +msgid "Option '-a' conflicts with option '-A'" +msgstr "Option '-a' wiederspricht option '-A'" + +#: cli/live_part.py:139 +msgid "%s was successfully written" +msgstr "Dein larch-Gerät, %s, wurde erfolgreich geschrieben" + +#: cli/live_part.py:180 +msgid "Volume label for boot partition (default %s)" +msgstr "Volume-Label für Bootpartition (Voreinstellung %s)" + +#: cli/live_part.py:184 +msgid "Don't generate 'larch/larchboot' file" +msgstr "'larch/larchboot-Datei nicht erstellen" + +#: cli/live_part.py:187 +msgid "" +"Override profile larch/nosave (force enable session saving) - conflicts with " +"'-A'" +msgstr "" +"'larch/nosave' im Profil unterdrücken (damit die Sitzungsspeicherung doch " +"möglich ist), widerspricht -A" + +#: cli/live_part.py:191 +msgid "Force disabling of session saving - conflicts with '-a'" +msgstr "Unterdrücke die Sitzungsspeicherung - widersrpicht '-a'" + +#: cli/live_part.py:194 +msgid "Don't format partition (only for experts!)" +msgstr "Partition nicht formatieren (nur für Experte!)" + +#: cli/live_part.py:197 +msgid "Don't install the bootloader (to the MBR)" +msgstr "Bootlader nicht (zum MBR) installieren" + +#: cli/live_part.py:211 +msgid "You must specify the partition to receive larch\n" +msgstr "Die Partition für das larch-System muss angegeben werden\n" + +#: cli/media_common.py:56 +msgid "Couldn't switch directory to '%s'" +msgstr "Konnte nicht nach Ordner '%s' wechseln" + +#: cli/media_common.py:64 +msgid "Option -C conflicts with -c" +msgstr "Option -C widerspricht Option -c" + +#: cli/media_common.py:69 +msgid "Option -S conflicts with -p" +msgstr "Option -S widerspricht Option -p" + +#: cli/media_common.py:125 +msgid "Invalid detection method (-d option)" +msgstr "Ungültiges Suchverfahren (Option -d)" + +#: cli/media_common.py:144 +msgid "Couldn't bind-mount current directory" +msgstr "AKtueller Ordner konnte nicht mit 'bind' eingebunden werden" + +#: cli/media_common.py:152 +msgid "File '%s' doesn't exist, '%s' is not a larch medium" +msgstr "Datei '%s' existiert nicht, '%s' ist kein larch-Medium" + +#: cli/media_common.py:166 +msgid "Couldn't mount '%s'. Not an iso?" +msgstr "'%s' konnte nicht eingehängt werden. Nicht ein 'iso'?" + +#: cli/media_common.py:176 +msgid "Couldn't mount '%s'" +msgstr "'%s' konnte nicht eingehängt werden." + +#: cli/media_common.py:185 +msgid "Source doesn't support syslinux" +msgstr "Die Quelle unterstützt syslinux nicht" + +#: cli/media_common.py:189 +msgid "Source doesn't support GRUB" +msgstr "Die Quelle unterstützt GRUB nicht" + +#: cli/media_common.py:205 +msgid "Couldn't bind-mount '%s'" +msgstr "'%s' konnte nicht mit '--bind' eingehängt werden." + +#: cli/media_common.py:232 +msgid "No kernel and/or initramfs" +msgstr "Kein kernel und/oder initramfs" + +#: cli/media_common.py:244 +msgid "Installation doesn't support syslinux" +msgstr "Installation unterstützt syslinux nicht" + +#: cli/media_common.py:246 +msgid "Installation doesn't support GRUB" +msgstr "Installation unterstützt GRUB nicht" + +#: cli/media_common.py:349 +msgid "The volume label is too long. Use the default (%s)?" +msgstr "Das Volume-Label ist zu lang. Die Voreinstellung (%s) verwenden?" + +#: cli/media_common.py:353 +msgid "Cancelled" +msgstr "Abgebrochen" + +#: cli/media_common.py:372 +msgid "Can't boot to label - device has no label" +msgstr "Booten zu 'label' nicht möglich, das Gerät hat kein 'label'" + +#: cli/media_common.py:383 +msgid "Boot configuration file '%s' not found" +msgstr "Boot-Konfigurationsdatei '%s' nicht gefunden" + +#: cli/media_common.py:441 +msgid "Base configuration file (%s) not found" +msgstr "Basis-Konfigurationsdatei '%s' nicht gefunden" + +#: cli/userinfo.py:45 +msgid "Invalid 'users' file" +msgstr "Ungültige 'users'-Datei" + +#: cli/userinfo.py:67 +msgid "Couldn't add user '%s'" +msgstr "Konnte Benutzer '%s' nicht einrichten" + +#: cli/userinfo.py:75 +msgid "Couldn't remove user '%s'" +msgstr "Konnte Benutzer '%s' nicht entfernen" + +#: cli/userinfo.py:90 +msgid "Couldn't save 'users' file" +msgstr "Konnte 'users'-Datei nicht speichern" + +#: gui/controller.py:131 +msgid "Couldn't read file '%s'" +msgstr "Konnte Datei '%s' nicht lesen" + +#: gui/controller.py:144 +msgid "Couldn't save file '%s'" +msgstr "Konnte Datei '%s' nicht speichern" + +#: gui/front/page_larchify.py:61 +msgid "No Arch installation at %s" +msgstr "Keine Arch-Installation in %s" + +#: gui/layouts/docviewer.uim:35 +msgid "Documentation" +msgstr "Dokumentation" + +#: gui/layouts/docviewer.uim:40 gui/layouts/logger.uim:52 +msgid "Hide" +msgstr "Schließen" + +#: gui/layouts/docviewer.uim:41 +msgid "Return to the larch controls" +msgstr "Zurückkehren zu den larch-Kontrollen" + +#: gui/layouts/docviewer.uim:47 +msgid "Go back in the viewing history" +msgstr "Zurück in der Browser-Geschichte" + +#: gui/layouts/docviewer.uim:53 +msgid "Go forward in the viewing history" +msgstr "Nach vorne in der Browser-Seitengeschichte" + +#: gui/layouts/docviewer.uim:60 +msgid "Reload the documentation for the current larch tab" +msgstr "Die Dokumentation für die aktuelle larch-Seite anzeigen" + +#: gui/layouts/docviewer.uim:67 +msgid "Go to the general larch documentation index" +msgstr "Das allgemeine larch-Inhaltsverzeichnis anzeigen" + +#: gui/layouts/editor.uim:39 +msgid "Editor" +msgstr "Editor" + +#: gui/layouts/editor.uim:45 +msgid "OK" +msgstr "Annehmen" + +#: gui/layouts/editor.uim:50 gui/layouts/progress.uim:54 +msgid "Cancel" +msgstr "Abbrechen" + +#: gui/layouts/editor.uim:55 +msgid "Revert" +msgstr "Zurücksetzen" + +#: gui/layouts/editor.uim:56 +msgid "Restore the text to its initial/default state" +msgstr "Text zum ursprünglichen Zustand zurücksetzen" + +#: gui/layouts/editor.uim:61 +msgid "Copy" +msgstr "Kopieren" + +#: gui/layouts/editor.uim:66 +msgid "Cut" +msgstr "Ausschneiden" + +#: gui/layouts/editor.uim:71 +msgid "Paste" +msgstr "Einfügen" + +#: gui/layouts/editor.uim:76 +msgid "Undo" +msgstr "Rückgängig" + +#: gui/layouts/editor.uim:81 +msgid "Redo" +msgstr "Wieder ausführen" + +#: gui/layouts/editor.uim:88 +msgid "Editing '%s'" +msgstr "Editiere '%s'" + +#: gui/layouts/logger.uim:37 +msgid "Low-level Command Logging" +msgstr "Protokoll der einzelnen Befehle" + +#: gui/layouts/logger.uim:38 gui/layouts/progress.uim:39 +msgid "Here you can follow the detailed, low-level progress of the commands." +msgstr "Hier kann man die einzelnen Schritte detailliert verfolgen" + +#: gui/layouts/logger.uim:47 +msgid "Clear" +msgstr "Löschen" + +#: gui/layouts/logger.uim:53 +msgid "Go back to the larch controls" +msgstr "Zurückkehren zu den larch-Kontrollen" + +#: gui/layouts/page_installation.uim:38 +msgid "Edit Profile" +msgstr "Profil editieren" + +#: gui/layouts/page_installation.uim:49 +msgid "Edit 'addedpacks'" +msgstr "'addedpacks' editieren" + +#: gui/layouts/page_installation.uim:50 +msgid "Edit the list of packages to be installed" +msgstr "Zu installierende Pakete ändern" + +#: gui/layouts/page_installation.uim:55 +msgid "Edit 'vetopacks'" +msgstr "'vetopacks' editieren" + +#: gui/layouts/page_installation.uim:56 +msgid "Edit the list of packages NOT to install" +msgstr "NICHT zu installierende Pakete ändern" + +#: gui/layouts/page_installation.uim:61 +msgid "Edit pacman.conf options" +msgstr "pacman.conf-Optionen editieren" + +#: gui/layouts/page_installation.uim:62 +msgid "Edit pacman.conf options - not the repositories" +msgstr "pacman.conf-Optionen editieren - nicht die Quellen" + +#: gui/layouts/page_installation.uim:67 +msgid "Edit pacman.conf repositories" +msgstr "pacman.conf-Quellen editieren" + +#: gui/layouts/page_installation.uim:68 +msgid "Edit the repository entries for pacman.conf" +msgstr "pacman.conf-Quellen editieren" + +#: gui/layouts/page_installation.uim:75 +msgid "Tweak Installed Packages" +msgstr "Installierte Pakete ändern" + +#: gui/layouts/page_installation.uim:81 +msgid "Synchronize db" +msgstr "Paket-Datenbank synchronisieren" + +#: gui/layouts/page_installation.uim:82 +msgid "Synchronize the pacman db on the target (pacman -Sy)" +msgstr "Paketen-Datenbank (Zielsystem) synchronisieren (pacman -Sy)" + +#: gui/layouts/page_installation.uim:87 +msgid "Update / Add package [-U]" +msgstr "Paket aktualisieren/installieren [-U]" + +#: gui/layouts/page_installation.uim:88 +msgid "Update / Add a package from a package file using pacman -U" +msgstr "" +"Ein Paket von einer Paketdatei mittels pacman -U aktualisieren / installieren" + +#: gui/layouts/page_installation.uim:94 +msgid "Add package(s) [-S]" +msgstr "Paket(e) installieren [-S]" + +#: gui/layouts/page_installation.uim:95 +msgid "Add one or more packages (space separated) using pacman -S" +msgstr "" +"Ein oder mehr Pakete (mit Leerzeichen getrennt) mittels pacman -S " +"installieren" + +#: gui/layouts/page_installation.uim:101 +msgid "Remove package(s) [-Rs]" +msgstr "Paket(e) entfernen [-Rs]" + +#: gui/layouts/page_installation.uim:102 +msgid "Remove one or more packages (space separated) using pacman -Rs" +msgstr "" +"Ein oder mehr Pakete (mit Leerzeichen getrennt) mittels pacman -Rs entfernen" + +#: gui/layouts/page_installation.uim:110 +msgid "Advanced Installation Options" +msgstr "Installationsoptionen für Fortgeschrittene" + +#: gui/layouts/page_installation.uim:116 +msgid "Use project repository list" +msgstr "Projekt-Paketquellenliste verwenden" + +#: gui/layouts/page_installation.uim:117 +msgid "Enables use of an alternative pacman.conf for installation only" +msgstr "" +"Ermöglicht die Verwendung einer alternativen pacman.conf-Datei nur für die " +"Installation" + +#: gui/layouts/page_installation.uim:125 +msgid "Edit repository list" +msgstr "Projekt-Paketquellenliste editieren" + +#: gui/layouts/page_installation.uim:126 +msgid "Edit repository list file used for installation" +msgstr "Paketquellenliste für die Installation editieren" + +#: gui/layouts/page_installation.uim:131 +msgid "Edit mirror list used for installation only" +msgstr "Paketquellenserverliste (mirrorlist) für die Installation editieren" + +#: gui/layouts/page_installation.uim:132 +msgid "A mirror list for the live system should be placed in the overlay" +msgstr "Eine Paketquellenserverliste (mirrorlist) sollte es im Overlay geben" + +#: gui/layouts/page_installation.uim:139 +msgid "Package Cache" +msgstr "Paket-Speicher" + +#: gui/layouts/page_installation.uim:146 +msgid "The path to the (host's) package cache" +msgstr "Paketencache-Pfad (im 'Host'-Dateisystem)" + +#: gui/layouts/page_installation.uim:150 gui/layouts/page_larchify.uim:153 +#: gui/layouts/page_medium.uim:200 gui/layouts/page_project.uim:145 +msgid "Change" +msgstr "Ändern" + +#: gui/layouts/page_installation.uim:151 +msgid "Change the package cache path" +msgstr "Paketencache-Pfad ändern" + +#: gui/layouts/page_installation.uim:157 +msgid "Install" +msgstr "Installieren" + +#: gui/layouts/page_installation.uim:158 +msgid "This will start the installation to the set path" +msgstr "Zum Starten der Installation zum eingestellen Pfad" + +#: gui/layouts/page_installation.uim:165 +msgid "Editing pacman.conf options only" +msgstr "Editiere nur die Optionen von pacman.conf" + +#: gui/layouts/page_installation.uim:166 +msgid "Editing pacman repositories" +msgstr "pacman.conf-Quellen editieren" + +#: gui/layouts/page_installation.uim:167 +msgid "Editing mirror list for installation" +msgstr "Paketquellenserverliste (mirrorlist) für die Installation editieren" + +#: gui/layouts/page_installation.uim:168 +msgid "Enter new package cache path:" +msgstr "Neuen Paket-cache-Pfad eingeben:" + +#: gui/layouts/page_installation.uim:169 +msgid "Editing pacman repositories for installation" +msgstr "Editiere nur die Paket-Quellen von pacman.conf" + +#: gui/layouts/page_installation.uim:170 +msgid "Package to add/update" +msgstr "Paket zum Installieren / Aktualisieren" + +#: gui/layouts/page_installation.uim:171 +msgid "Packages" +msgstr "Pakete" + +#: gui/layouts/page_installation.uim:172 +msgid "" +"Enter the names of packages to install -\n" +" separated by spaces:" +msgstr "" +"Die Namen der zu installierenden Pakete eingeben -\n" +" mit Leerzeichen getrennt:" + +#: gui/layouts/page_installation.uim:174 +msgid "" +"Enter the names of packages to remove -\n" +" separated by spaces:" +msgstr "" +"Die Namen der zu entfernenden Pakete eingeben -\n" +" mit Leerzeichen getrennt:" + +#: gui/layouts/page_larchify.uim:42 +msgid "The system to be compressed must be installed and ready." +msgstr "Das System zum Komprimieren muss schon installiert und fertig sein." + +#: gui/layouts/page_larchify.uim:48 +msgid "Edit supported locales" +msgstr "Unterstützte Lokale editieren" + +#: gui/layouts/page_larchify.uim:49 +msgid "Edit the /etc/locale.gen file to select supported glibc locales" +msgstr "/etc/locale.gen editieren, um unterstützte glibc-locales festzulegen" + +#: gui/layouts/page_larchify.uim:55 +msgid "Edit Arch configuration" +msgstr "Arch-Konfigurationsdatei (/etc/rc.conf) editieren" + +#: gui/layouts/page_larchify.uim:56 +msgid "Edit the /etc/rc.conf file to configure the live system" +msgstr "/etc/rc.conf editieren, um das Live-System zu konfigurieren" + +#: gui/layouts/page_larchify.uim:62 +msgid "Edit overlay" +msgstr "Overlay bearbeiten" + +#: gui/layouts/page_larchify.uim:63 +msgid "Open a file browser on the profile's 'rootoverlay'" +msgstr "'rootoverlay'-Ordner vom Profil im Datei-Browser öffnen" + +#: gui/layouts/page_larchify.uim:69 +msgid "Advanced Options" +msgstr "Optionen für Fortgeschrittene" + +#: gui/layouts/page_larchify.uim:75 +msgid "Edit mkinitcpio.conf" +msgstr "mkinitcpio.conf editieren" + +#: gui/layouts/page_larchify.uim:76 +msgid "Edit the configuration file for generating the initramfs via mkinitcpio" +msgstr "" +"Die Konfigurationsdatei für initramfs-Erzeugung mittels mkinitcpio editieren" + +#: gui/layouts/page_larchify.uim:82 +msgid "Generate ssh keys" +msgstr "ssh-Schlüssel erzeugen" + +#: gui/layouts/page_larchify.uim:83 +msgid "The ssh host keys will be pre-generated" +msgstr "Die ssh-host-Schlüssel werden vorgeneriert" + +#: gui/layouts/page_larchify.uim:88 +msgid "Reuse existing locales" +msgstr "Vorhandene 'locales' wiederverwenden" + +#: gui/layouts/page_larchify.uim:89 +msgid "" +"To save time it may be possible to reuse glibc locales from a previous run" +msgstr "" +"Um Zeit zu sparen, könnte es möglich sein, die glibc-locales von " +"einemfrüheren Ablauf zu verwenden" + +#: gui/layouts/page_larchify.uim:96 +msgid "Reuse existing system.sqf" +msgstr "Vorhandenes system.sqf verwenden" + +#: gui/layouts/page_larchify.uim:97 +msgid "" +"Reuse existing system.sqf, to save time if the base system hasn't changed" +msgstr "" +"Schon vorhandenes system.sqf wiederverwenden, um Zeit zu sparen, falls das " +"Basis-System unverändert ist." + +#: gui/layouts/page_larchify.uim:103 gui/layouts/page_main.uim:86 +msgid "Larchify" +msgstr "Larchifizieren" + +#: gui/layouts/page_larchify.uim:104 +msgid "Build the main components of the larch system" +msgstr "Die Hauptkomponenten des larch-Systems erzeugen" + +#: gui/layouts/page_larchify.uim:111 +msgid "User accounts" +msgstr "Benutzer" + +#: gui/layouts/page_larchify.uim:125 +msgid "Click on a row to select, click on a selected cell to edit" +msgstr "" +"Klicke auf eine Zeile um sie zu selektieren,Klicke auf eine selektierte " +"Zelle um sie zu editieren" + +#: gui/layouts/page_larchify.uim:132 +msgid "Add user" +msgstr "Neuen Benutzer" + +#: gui/layouts/page_larchify.uim:133 +msgid "Create a new user-name" +msgstr "Einen neuen Benutzernamen erstellen" + +#: gui/layouts/page_larchify.uim:138 +msgid "Delete user" +msgstr "Benutzer löschen" + +#: gui/layouts/page_larchify.uim:139 +msgid "Remove the selected user-name" +msgstr "Entferne den selektierten Benutzernamen" + +#: gui/layouts/page_larchify.uim:144 +msgid "Root password:" +msgstr "'root'-Passwort:" + +#: gui/layouts/page_larchify.uim:149 +msgid "The unencrypted root password for the live system" +msgstr "Das unverschlüsseltes 'root'-Passwort für das Live-System" + +#: gui/layouts/page_larchify.uim:154 +msgid "Enter a new password for the 'root' user" +msgstr "Neues 'root'-Passwort eingeben" + +#: gui/layouts/page_larchify.uim:163 +msgid "Renaming failed, see log" +msgstr "Umbennenung schlug fehl, siehe Protokoll" + +#: gui/layouts/page_larchify.uim:164 +msgid "Couldn't adjust user definition" +msgstr "Konnte Benutzer-Information nicht ändern" + +#: gui/layouts/page_larchify.uim:165 +msgid "Default (/etc/skel)" +msgstr "Standard (/etc/skel)" + +#: gui/layouts/page_larchify.uim:166 +msgid "" +"This folder will be copied\n" +"to build the user's home folder:" +msgstr "" +"Dieser Ordner wird kopiert\n" +"um den Home-Ordner des neuen\n" +"Benutzers zu erstellen:" + +#: gui/layouts/page_larchify.uim:168 +msgid "Choose 'skel' Folder" +msgstr "'skel'-Ordner auswählen" + +#: gui/layouts/page_larchify.uim:169 +msgid "Enter login-name for new user:" +msgstr "Neuen Anmeldenamen eingeben:" + +#: gui/layouts/page_larchify.uim:170 +msgid "Enter root password for live system:" +msgstr "Das unverschlüsseltes 'root'-Passwort für das Live-System" + +#: gui/layouts/page_larchify.uim:175 +msgid "Group" +msgstr "Gruppe" + +#: gui/layouts/page_larchify.uim:175 +msgid "Password" +msgstr "Passwort" + +#: gui/layouts/page_larchify.uim:175 +msgid "User-Name" +msgstr "Benutzername" + +#: gui/layouts/page_larchify.uim:176 +msgid "'skel' directory" +msgstr "'skel'-Ordner" + +#: gui/layouts/page_larchify.uim:177 +msgid "Additional Groups" +msgstr "Zusätzliche Gruppen" + +#: gui/layouts/page_larchify.uim:177 +msgid "Expert options" +msgstr "Optionen für Experten" + +#: gui/layouts/page_main.uim:51 +msgid "Live Arch Linux Construction Kit" +msgstr "Live-Arch-Linux-Baukasten" + +#: gui/layouts/page_main.uim:55 +msgid "View Log" +msgstr "Protokoll Zeigen" + +#: gui/layouts/page_main.uim:56 +msgid "This button switches to the log viewer" +msgstr "Dieser Knopf wechselt zum Protokoll-Anzeige" + +#: gui/layouts/page_main.uim:61 +msgid "Help" +msgstr "Hilfe" + +#: gui/layouts/page_main.uim:62 +msgid "This button switches to the documentation viewer" +msgstr "Dieser Knopf wechselt zur Dokumentationsanzeige" + +#: gui/layouts/page_main.uim:67 +msgid "Quit" +msgstr "Abbrechen" + +#: gui/layouts/page_main.uim:68 +msgid "Stop the current action and quit the program" +msgstr "Aktuellen Vorgang anhalten und Anwendung schließen" + +#: gui/layouts/page_main.uim:84 +msgid "Project Settings" +msgstr "Projekteinstellungen" + +#: gui/layouts/page_main.uim:85 +msgid "Installation" +msgstr "Installation" + +#: gui/layouts/page_main.uim:87 +msgid "Medium Profile" +msgstr "Medium-Profil" + +#: gui/layouts/page_main.uim:88 +msgid "Make Medium" +msgstr "Medium Erstellen" + +#: gui/layouts/page_main.uim:96 +msgid "Authentication failure" +msgstr "Fehler beim Authetifizieren" + +#: gui/layouts/page_main.uim:97 +msgid "Enter the password to run as administrator:" +msgstr "Administrator-Passwort eingeben:" + +#: gui/layouts/page_medium.uim:42 +msgid "Select larch source" +msgstr "larch-Quelle wählen" + +#: gui/layouts/page_medium.uim:52 +msgid "larchified system" +msgstr "larchifiziertes System" + +#: gui/layouts/page_medium.uim:53 +msgid "Use the system prepared within the larch build directory" +msgstr "Das von larch erstellte System im Arbeitsordner verwenden" + +#: gui/layouts/page_medium.uim:59 +msgid "Device" +msgstr "Gerät" + +#: gui/layouts/page_medium.uim:60 +msgid "Use a system on a mountable device" +msgstr "Einhängbares Gerät als Systemquelle verwenden" + +#: gui/layouts/page_medium.uim:65 +msgid "'iso' file" +msgstr "'iso'-Datei" + +#: gui/layouts/page_medium.uim:66 +msgid "Use a system on an 'iso' file" +msgstr "'iso'-Datei als Systemquelle verwenden" + +#: gui/layouts/page_medium.uim:71 +msgid "Path" +msgstr "Pfad" + +#: gui/layouts/page_medium.uim:72 +msgid "Use a directory within the filesystem" +msgstr "Ein Ordner im Datei-System verwenden" + +#: gui/layouts/page_medium.uim:78 +msgid "The location from where the larch system will be fetched" +msgstr "Woher das larch-System geholt wird" + +#: gui/layouts/page_medium.uim:83 gui/layouts/page_medium.uim:114 +msgid "Choose" +msgstr "Wählen" + +#: gui/layouts/page_medium.uim:84 +msgid "Select the source location" +msgstr "Quelle wählen" + +#: gui/layouts/page_medium.uim:91 +msgid "Write to partition" +msgstr "Partition beschreiben" + +#: gui/layouts/page_medium.uim:92 +msgid "" +"Don't create an 'iso' (CD/DVD), write the larch system to a partition (e.g. " +"USB-stick)" +msgstr "" +"Keine 'iso'-Datei (für CD/DVD) erstellen sondern auf eine Partition (z.B: " +"USB-stick) installieren" + +#: gui/layouts/page_medium.uim:104 +msgid "Partition:" +msgstr "Partition:" + +#: gui/layouts/page_medium.uim:109 +msgid "The partition to which the larch system is to be installed" +msgstr "Die Partition, auf der das larch-System installiert werden soll" + +#: gui/layouts/page_medium.uim:115 +msgid "Select the partition to receive the larch system" +msgstr "Die Partition für das larch-System wählen" + +#: gui/layouts/page_medium.uim:120 +msgid "Don't format" +msgstr "Nicht formatieren" + +#: gui/layouts/page_medium.uim:121 +msgid "" +"Copy the data to the partition without formatting first\n" +"(not the normal procedure, NOT RECOMMENDED!)" +msgstr "" +"Kopiere die Daten zur Partition ohne zuerst zu formatieren\n" +" (nicht die normale Prozedur, NICHT EMPFOHLEN!)" + +#: gui/layouts/page_medium.uim:127 +msgid "Don't install the bootloader" +msgstr "Kein Bootlader installieren" + +#: gui/layouts/page_medium.uim:128 +msgid "" +"The bootloader will not be installed, leaving the mbr untouched\n" +"(you'll need to provide some other means of booting)" +msgstr "" +"Kein Bootloader installieren, die Master-Boot-Record bleibt unberührt\n" +"( die Bootfähigkeit muss anderweitig sichergestellt werden)" + +#: gui/layouts/page_medium.uim:135 +msgid "Not bootable via search" +msgstr "Nicht per Durchsuchung bootfähig" + +#: gui/layouts/page_medium.uim:136 +msgid "" +"Don't create the file 'larch/larchboot':\n" +" the medium will only be bootable by uuid, label or partition name" +msgstr "" +"Erstelle nicht die Datei 'larch/larchboo':\n" +" Das Medium wird nur über 'uuid', 'label' oder Partitionsbezeichnung " +"bootfähig sein" + +#: gui/layouts/page_medium.uim:143 +msgid "Enable session-saving" +msgstr "Sitzungsspeicherung aktivieren" + +#: gui/layouts/page_medium.uim:144 +msgid "" +"Can override profile's 'larch/nosave' file, to make session-saving possible " +"in that case too" +msgstr "" +"'larch/nosave' im Profil kann unterdrückt werden, damit die " +"Sitzungsspeicherung doch möglich ist" + +#: gui/layouts/page_medium.uim:153 +msgid "Medium Detection" +msgstr "Entdeckung des Mediums" + +#: gui/layouts/page_medium.uim:154 +msgid "" +"Choose how the boot scripts determine where to look for the larch system " +"(ONLY ON PARTITIONED MEDIA)" +msgstr "" +"Bestimme, wie die Bootskripts das larch-System entdecken(NUR AUF " +"PARTITIONIERTEN MEDIEN)" + +#: gui/layouts/page_medium.uim:161 +msgid "UUID" +msgstr "UUID" + +#: gui/layouts/page_medium.uim:162 +msgid "Use the partition's UUID to find it" +msgstr "Partition-UUID zum Identifizieren verwenden" + +#: gui/layouts/page_medium.uim:167 +msgid "LABEL" +msgstr "LABEL" + +#: gui/layouts/page_medium.uim:168 +msgid "Use the partition's label to find it" +msgstr "Partition-Label zum Identifizierung verwenden" + +#: gui/layouts/page_medium.uim:173 +msgid "Partition" +msgstr "Partition" + +#: gui/layouts/page_medium.uim:174 +msgid "Use the partition's name (/dev/sdb1, etc.) to find it" +msgstr "Partition-Bezeichnung (/dev/sdb1, usw.) verwenden um sie zu finden" + +#: gui/layouts/page_medium.uim:179 +msgid "Search (for larchboot)" +msgstr "Suche (nach 'larchboot')" + +#: gui/layouts/page_medium.uim:180 +msgid "" +"Test all CD/DVD devices and partitions until the file 'larch/larchboot' is " +"found" +msgstr "" +"Alle Laufwerke und Partitionen durchsuchen, bis die Datei 'larch/larchboot' " +"gefunden wird" + +#: gui/layouts/page_medium.uim:190 +msgid "Volume Label:" +msgstr "Medium-'Label':" + +#: gui/layouts/page_medium.uim:195 +msgid "The length may not exceed 16 bytes, 11 for vfat(syslinux)" +msgstr "Die Länge darf 16 Zeichen, 11 für vfat(syslinux) nicht überschreiten" + +#: gui/layouts/page_medium.uim:201 +msgid "Enter a new label for the volume, empty to use default" +msgstr "" +"Neues 'Label' für das Boot-Medium eingeben, leer lassen umdie Voreinstellung " +"zu übernehmen" + +#: gui/layouts/page_medium.uim:209 +msgid "Bootloader" +msgstr "Bootlader" + +#: gui/layouts/page_medium.uim:210 +msgid "You can choose between GRUB and syslinux/isolinux as bootloader" +msgstr "Man hat die Wahl des Bootladers zwischen GRUB und syslinux/isolinux" + +#: gui/layouts/page_medium.uim:218 +msgid "Use GRUB as bootloader" +msgstr "Verwende GRUB als Bootlader" + +#: gui/layouts/page_medium.uim:224 +msgid "Use syslinux (partition) or isolinux (CD/DVD) as bootloader" +msgstr "Verwende syslinux (Partition) oder isolinux (CD/DVD) als Bootlader" + +#: gui/layouts/page_medium.uim:232 +msgid "Use chroot" +msgstr "'chroot' verwenden" + +#: gui/layouts/page_medium.uim:233 +msgid "" +"Use the larch installation for the build process\n" +" - the default should be alright in most cases" +msgstr "" +"Die larch-Installation für den Erstellungsprozess verweden\n" +" - die Standardeinstellung sollte in den meisten Fällen richtig sein" + +#: gui/layouts/page_medium.uim:240 +msgid "Create boot iso" +msgstr "Boot-iso erstellen" + +#: gui/layouts/page_medium.uim:241 +msgid "" +"Create a small boot iso for this device (for machines that can't boot from " +"USB)" +msgstr "" +"Ein kleines Boot-iso für das vorhandene System erstellen (für Rechner, die " +"nicht von USB bootem können)" + +#: gui/layouts/page_medium.uim:247 +msgid "Write the larch medium" +msgstr "larch-Medium Erstellen" + +#: gui/layouts/page_medium.uim:248 +msgid "" +"The larch image will be written to the 'iso' file or to the partition, as " +"selected" +msgstr "" +"Das larch-Abbild wird in die 'iso'-Datei oder zur Partition geschrieben, so " +"wie gewählt" + +#: gui/layouts/page_medium.uim:256 +msgid "Select source medium folder" +msgstr "Quelle wählen" + +#: gui/layouts/page_medium.uim:257 +msgid "Select source iso file" +msgstr "iso-Quellendatei wählen" + +#: gui/layouts/page_medium.uim:258 +msgid "larch iso images" +msgstr "larch iso-Dateien" + +#: gui/layouts/page_medium.uim:259 +msgid "Select unmounted partition" +msgstr "Nicht-eingebundene Partition wählen" + +#: gui/layouts/page_medium.uim:260 +msgid "larch system source:" +msgstr "larch-Quelle:" + +#: gui/layouts/page_medium.uim:261 +msgid "" +"Device to receive larch system.\n" +"WARNING: Be very careful in choosing here,\n" +"if you choose the wrong one you might\n" +"seriously damage your system!" +msgstr "" +"Gerät zum Aufspielen des larch-Systems.\n" +"ACHTUNG bei der Wahl,\n" +"eine schlechte Wahl könnte deinem System\n" +"ernsthafte Schäden zufügen!" + +#: gui/layouts/page_medium.uim:265 +msgid "Invalid larch medium folder: %s" +msgstr "Ungültiger larch-Ordner': %s" + +#: gui/layouts/page_medium.uim:266 +msgid "Volume label (clear to use default):" +msgstr "Volume-Label (leer, um die Voreinstellung zu übernehmen):" + +#: gui/layouts/page_medium.uim:267 +msgid "Save 'iso' to ..." +msgstr "'iso' speichern unter ..." + +#: gui/layouts/page_mediumprofile.uim:40 +msgid "Edit boot entries" +msgstr "Boot-Optionen editieren" + +#: gui/layouts/page_mediumprofile.uim:41 +msgid "Edit the file determining the boot entries" +msgstr "Die Datei editieren, die die Boot-Einträge bestimmt" + +#: gui/layouts/page_mediumprofile.uim:46 +msgid "Edit grub template" +msgstr "'grub'-Schablone editieren" + +#: gui/layouts/page_mediumprofile.uim:47 +msgid "Edit grub's configuration file, but not the larch boot entries" +msgstr "" +"Die grub-Konfigurationsdatei editieren, aber ohne die larch-Booteinträge" + +#: gui/layouts/page_mediumprofile.uim:53 +msgid "Edit syslinux/isolinux template" +msgstr "'syslinux/isolinux'-Schablone editieren" + +#: gui/layouts/page_mediumprofile.uim:54 +msgid "" +"Edit the syslinux/isolinux configuration file, but not the larch boot entries" +msgstr "" +"Die 'syslinux/isolinux'-Konfigurationsdatei editieren, aber ohne die larch-" +"Booteinträge" + +#: gui/layouts/page_mediumprofile.uim:60 +msgid "Edit cd-root (open in file browser)" +msgstr "" +"'cd-root' editieren\n" +"(im Datei-Browser öffnen)" + +#: gui/layouts/page_mediumprofile.uim:61 +msgid "Open a file browser on the profile's 'cd-root' folder" +msgstr "'cd-root'-Ordner vom Profil im Datei-Browser öffnen" + +#: gui/layouts/page_mediumprofile.uim:83 +msgid "Disable session saving" +msgstr "Sitzungsspeicherung sperren" + +#: gui/layouts/page_mediumprofile.uim:84 +msgid "" +"If checked, the medium will have the file 'larch/nosave',\n" +"which only has an effect on writable media." +msgstr "" +"Wenn hier aktiviert, bekommt das Medium die Datei 'larch/nosave',\n" +"die nur auf schreibbaren Medien eine Auswirkung hat." + +#: gui/layouts/page_project.uim:37 +msgid "Profile" +msgstr "Profil" + +#: gui/layouts/page_project.uim:48 +msgid "Select:" +msgstr "Auswählen:" + +#: gui/layouts/page_project.uim:54 +msgid "Choose a profile from those already in your larch working folder" +msgstr "Ein Profil von den im Arbeitsverzeichnis schon vorhandenen wählen" + +#: gui/layouts/page_project.uim:60 +msgid "Browse for Profile" +msgstr "Profil suchen" + +#: gui/layouts/page_project.uim:61 +msgid "Fetch a profile from the file-system" +msgstr "Ein Profil vom Datei-System holen" + +#: gui/layouts/page_project.uim:66 +msgid "Rename" +msgstr "Umbenennen" + +#: gui/layouts/page_project.uim:67 +msgid "Rename the current profile" +msgstr "Aktuelles Profil umbenennen" + +#: gui/layouts/page_project.uim:72 gui/layouts/page_project.uim:126 +msgid "Delete" +msgstr "Löschen" + +#: gui/layouts/page_project.uim:73 +msgid "Delete an unused profile" +msgstr "Ein nicht verwendetes Profil löschen" + +#: gui/layouts/page_project.uim:78 +msgid "Copy to ..." +msgstr "Kopieren nach ..." + +#: gui/layouts/page_project.uim:79 +msgid "Copy the current profile to somehere else" +msgstr "Das aktuelle Profil irgendwohin kopieren" + +#: gui/layouts/page_project.uim:86 +msgid "Advanced Project Options" +msgstr "Projekt-Optionen für Fortgeschrittene" + +#: gui/layouts/page_project.uim:110 +msgid "Choose Existing Project:" +msgstr "Vorhandenes Projekt Wählen:" + +#: gui/layouts/page_project.uim:114 +msgid "Choose a project from those already defined" +msgstr "Ein Projekt von den schon definierten wählen" + +#: gui/layouts/page_project.uim:120 +msgid "New Project" +msgstr "Neues Projekt" + +#: gui/layouts/page_project.uim:121 +msgid "Create a new project" +msgstr "Ein neues Projekt erstellen" + +#: gui/layouts/page_project.uim:127 +msgid "Delete a project" +msgstr "Ein Projekt löschen" + +#: gui/layouts/page_project.uim:132 +msgid "Installation Path" +msgstr "Installationspfad" + +#: gui/layouts/page_project.uim:140 +msgid "The root directory of the Arch installation to larchify" +msgstr "Das Root-Verzeichnis der zu larchifizierenden Arch-Installation" + +#: gui/layouts/page_project.uim:146 +msgid "Change the root directory of the Arch installation" +msgstr "Das Root-Verzeichnis der Arch-Installation ändern" + +#: gui/layouts/page_project.uim:153 +msgid "Select profile source folder" +msgstr "Profil-Quellordner wählen" + +#: gui/layouts/page_project.uim:154 +msgid "Destination profile exists - replace it?" +msgstr "Ziel (Profilordner) existiert schon, ersetzen?" + +#: gui/layouts/page_project.uim:155 +msgid "Enter new name for current profile:" +msgstr "Neuen Namen für aktuelles Profil eingeben:" + +#: gui/layouts/page_project.uim:156 +msgid "Profile '%s' exists already" +msgstr "Profil '%s' existiert schon" + +#: gui/layouts/page_project.uim:157 +msgid "Can't rename the profile, it is in use by other projects" +msgstr "" +"Profil kann nicht umbennant werden, es wird von anderen Projekten gebraucht" + +#: gui/layouts/page_project.uim:159 +msgid "Save profile folder" +msgstr "Profilordner speichern" + +#: gui/layouts/page_project.uim:160 +msgid "Destination exists - replace it?" +msgstr "Ziel existiert schon - ersetzen?" + +#: gui/layouts/page_project.uim:161 +msgid "Select the profile for deletion" +msgstr "Profil zum Löschen auswählen" + +#: gui/layouts/page_project.uim:162 +msgid "Remove Profile" +msgstr "Profil löschen" + +#: gui/layouts/page_project.uim:163 +msgid "There are no profiles which can be deleted - all are in use" +msgstr "Kein Profil kann gelöscht werden - alle werden gebraucht" + +#: gui/layouts/page_project.uim:165 +msgid "Couldn't delete profile '%s' - check permissions" +msgstr "Profil '%s' konnte nicht gelöscht werden - Rechte überprüfen" + +#: gui/layouts/page_project.uim:167 +msgid "" +"An empty path here will reset to the default.\n" +" WARNING: Double check your path -\n" +" If you make a mistake here it could destroy your system!\n" +"\n" +"Enter new installation path:" +msgstr "" +"Ein leerer Pfad wird die Voreinstellung übernehmen.\n" +"ACHTUNG: Den Pfad gut kontrollieren -\n" +" Ein Fehler könnte dein System zerstören!\n" +"\n" +"Neuen Installationspfad eingeben:" + +#: gui/layouts/page_project.uim:171 +msgid "Enter name for new project:" +msgstr "Neuen Projektnamen eingeben:" + +#: gui/layouts/page_project.uim:172 +msgid "Project '%s' already exists" +msgstr "Projekt '%s' existiert schon." + +#: gui/layouts/page_project.uim:173 +msgid "Select the project for deletion" +msgstr "Zu löschendes Projekt auswählen" + +#: gui/layouts/page_project.uim:174 +msgid "Remove Project" +msgstr "Projekt löschen" + +#: gui/layouts/page_project.uim:175 +msgid "There are no projects which can be deleted" +msgstr "Kein Projekt kann gelöscht werden" + +#: gui/layouts/page_project.uim:176 +msgid "'%s' is not a profile folder" +msgstr "Ungültiger Profilordner: '%s'" + +#: gui/layouts/page_project.uim:177 +msgid "The path '%s' is already in use, not saving" +msgstr "Der Pfad '%s' wird schon benutzt, kann nicht speichern" + +#: gui/layouts/progress.uim:38 +msgid "Processing ..." +msgstr "Prozess läuft ..." + +#: gui/layouts/progress.uim:49 +msgid "An indication of the progress of the current operation, if possible" +msgstr "Zeigt den Fortschritt der aktuellen Operation, insoweit möglich" + +#: gui/layouts/progress.uim:55 +msgid "Stop the current action" +msgstr "Aktuellen Vorgang anhalten" + +#: gui/layouts/progress.uim:60 +msgid "Done" +msgstr "Fertig" + +#: gui/project.py:187 +msgid "Working Profiles" +msgstr "ArbeitsProfile" + +#: gui/project.py:188 +msgid "Examples" +msgstr "Beispiele" + +#: gui/project.py:189 +msgid "File-system" +msgstr "Dateisystem" diff --git a/build_tools/l7/larch0/i18n/de/LC_MESSAGES/larch.mo b/build_tools/l7/larch0/i18n/de/LC_MESSAGES/larch.mo Binary files differnew file mode 100644 index 0000000..34b903e --- /dev/null +++ b/build_tools/l7/larch0/i18n/de/LC_MESSAGES/larch.mo diff --git a/build_tools/l7/larch0/i18n/i18n.py b/build_tools/l7/larch0/i18n/i18n.py new file mode 100755 index 0000000..de5bc80 --- /dev/null +++ b/build_tools/l7/larch0/i18n/i18n.py @@ -0,0 +1,108 @@ +#!/usr/bin/env python +# -*- coding: UTF-8 -*- + +# i18n.py + +#2010.07.14 +# Copyright 2009-2010 Michael Towers + +# This file is part of the larch project. +# +# larch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# larch is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with larch; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#---------------------------------------------------------------------------- + +""" +A script, together with i18n2.py, to ease the use of the gettext translation +system with larch. Just run it with the (short) name of your language, +e.g. "fr", as argument. +The steps it performs are roughly given below. If you prefer a gui have a +look at poedit (uses wxwidgets). + +1) Generally something like: pygettext.py -p i18n -o larch.pot *.py + +2) cd i18n ; msginit -i larchin.pot -l de + +OR: +2a) to update a po file: + +cd i18n ; msgmerge -U larchin.po larchin.pot + +3) edit po file + +4) generate binary file: +cd i18n ; msgfmt -c -v -o larchin.mo larchin.po + +5) move the .mo file to i18n/de/LC_MESSAGES + +6) Add to the main program file: + +import gettext +gettext.install('larch', 'i18n', unicode=1) + +5) Run, e.g.: +LANG=de_DE larchin.py +""" + +import sys, os, shutil +from subprocess import call + +thisdir = os.path.dirname(os.path.realpath(__file__)) +basedir = os.path.dirname(thisdir) +os.chdir(basedir) + +dbg = False +if (len(sys.argv) < 2): + lang = "de" +else: + if sys.argv[1] == '-d': + lang = "de" + dbg = True + else: + lang = sys.argv[1] + +print "Generating internationalization for language '%s'\n" % lang +print " If you wanted a different language run 'i18n.py <language>'" +print " For example 'i18n.py fr'\n" + +allpy = ["cli/*.py", "gui/*.py", "gui/front/*.py", "gui/layouts/*.uim"] +if dbg: + print "Debugging ...\n" + + from glob import glob + for d in allpy: + pys = glob(d) + for f in pys: + print "Parsing '%s'" % f + call(["pygettext.py", "-p", "i18n", "-o", "larch.pot", f]) + exit() + +call(["pygettext.py", "-p", "i18n", "-o", "larch.pot"] + allpy) + +os.chdir(thisdir) +langfile = lang + ".po" +pofile = os.path.join(lang, "LC_MESSAGES", langfile) +if os.path.isfile(pofile): + shutil.copy(pofile, ".") + call(["msgmerge", "-U", langfile, "larch.pot"]) +else: + call(["sed", "-i", "s|CHARSET|utf-8|", "larch.pot"]) + call(["msginit", "--no-translator", "-i", "larch.pot", "-l", lang]) + +lf = open("lang", "w") +lf.write(lang) +lf.close() + +print "Now edit '%s' and then run 'i18n2.py'" % langfile diff --git a/build_tools/l7/larch0/i18n/i18n2.py b/build_tools/l7/larch0/i18n/i18n2.py new file mode 100755 index 0000000..f33f147 --- /dev/null +++ b/build_tools/l7/larch0/i18n/i18n2.py @@ -0,0 +1,51 @@ +#!/usr/bin/env python +# -*- coding: UTF-8 -*- + +# i18n2.py + +#2009-06-07 +# Copyright 2009 Michael Towers + +# This file is part of the larch project. +# +# larch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# larch is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with larch; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#---------------------------------------------------------------------------- + +"""This is part 2 of the internationalization helper. +After editing ??.po, run this to compile it and copy it to the +correct location. +""" + +import os +from subprocess import call + +thisdir = os.path.dirname(os.path.realpath(__file__)) +os.chdir(thisdir) +lf = open("lang", "r") +lang = lf.read() +lf.close() +langfile = lang + ".po" + +print "Compiling internationalization for language '%s'\n" % lang +call(["msgfmt", "-c", "-v", "-o", "larch.mo", langfile]) + +podir = os.path.join(lang, "LC_MESSAGES") +if not os.path.isdir(podir): + os.makedirs(podir) +os.rename(langfile, os.path.join(podir, langfile)) +os.rename("larch.mo", os.path.join(podir, "larch.mo")) + +print "DONE!" diff --git a/build_tools/l7/larch0/i18n/larch.pot b/build_tools/l7/larch0/i18n/larch.pot new file mode 100644 index 0000000..7e730aa --- /dev/null +++ b/build_tools/l7/larch0/i18n/larch.pot @@ -0,0 +1,1462 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR ORGANIZATION +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2010-07-14 15:19+CEST\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: ENCODING\n" +"Generated-By: pygettext.py 1.5\n" + + +#: cli/archin.py:39 +msgid "Operations on '/' are not supported ..." +msgstr "" + +#: cli/archin.py:40 +msgid "Install Arch to '%s'?" +msgstr "" + +#: cli/archin.py:63 +msgid "No pacman executable found" +msgstr "" + +#: cli/archin.py:157 +msgid "Couldn't write to the installation path (%s)" +msgstr "" + +#: cli/archin.py:161 +msgid "The installation path (%s) is mounted 'nodev'." +msgstr "" + +#: cli/archin.py:168 +msgid "The installation path (%s) is mounted 'noexec'." +msgstr "" + +#: cli/archin.py:193 +msgid "Package installation failed" +msgstr "" + +#: cli/archin.py:200 +msgid "Arch installation completed" +msgstr "" + +#: cli/archin.py:207 +msgid "No '%s' file" +msgstr "" + +#: cli/archin.py:221 +msgid "Invalid package file include: %s" +msgstr "" + +#: cli/archin.py:253 +msgid "Couldn't synchronize pacman database (pacman -Sy)" +msgstr "" + +#: cli/archin.py:313 +msgid "usage: %%prog [options] %s [packages]" +msgstr "" + +#: cli/archin.py:318 cli/larchify.py:558 +msgid "Profile: 'user:profile-name' or path to profile directory" +msgstr "" + +#: cli/archin.py:321 cli/larchify.py:561 +msgid "Path to directory to be larchified (default %s)" +msgstr "" + +#: cli/archin.py:324 cli/boot_iso.py:119 cli/larchify.py:564 +#: cli/live_iso.py:113 cli/live_part.py:162 +msgid "Run as a slave from a controlling program (e.g. from a gui)" +msgstr "" + +#: cli/archin.py:327 cli/boot_iso.py:122 cli/larchify.py:567 +#: cli/live_iso.py:116 cli/live_part.py:165 +msgid "Suppress output messages, except errors (no effect if -s specified)" +msgstr "" + +#: cli/archin.py:332 cli/boot_iso.py:126 cli/larchify.py:575 +#: cli/live_iso.py:120 cli/live_part.py:169 +msgid "Don't ask for confirmation" +msgstr "" + +#: cli/archin.py:336 +msgid "Supply a substitute repository list (pacman.conf.repos) for the installation only" +msgstr "" + +#: cli/archin.py:340 +msgid "pacman cache directory (default /var/cache/pacman/pkg)" +msgstr "" + +#: cli/archin.py:343 +msgid "Don't show pacman's progress bar" +msgstr "" + +#: cli/archin.py:355 +msgid "" +"You must specify which operation to perform:\n" +msgstr "" + +#: cli/archin.py:360 cli/boot_iso.py:144 cli/larchify.py:581 +#: cli/live_iso.py:150 cli/live_part.py:216 +msgid "This application must be run as root" +msgstr "" + +#: cli/archin.py:369 +msgid "" +"Invalid operation: '%s'\n" +msgstr "" + +#: cli/backend.py:66 +msgid "" +"larch (%s) seems to be running already.\n" +"If you are absolutely sure this is not the case,\n" +"you may continue. Otherwise you should cancel.\n" +"\n" +"Shall I continue?" +msgstr "" + +#: cli/backend.py:115 +msgid "The backend reported %d failed calls, you may want to investigate" +msgstr "" + +#: cli/backend.py:138 +msgid "_yes|_no" +msgstr "" + +#: cli/backend.py:176 +msgid "" +"Something went wrong:\n" +msgstr "" + +#: cli/backend.py:304 +msgid "Invalid profile: %s" +msgstr "" + +#: cli/backend.py:307 +msgid "Invalid profile folder: %s" +msgstr "" + +#: cli/backend.py:425 +msgid "Couldn't read file: %s" +msgstr "" + +#: cli/boot_iso.py:45 cli/live_part.py:49 +msgid "Invalid device: %s" +msgstr "" + +#: cli/boot_iso.py:82 cli/live_iso.py:81 +msgid "iso build failed" +msgstr "" + +#: cli/boot_iso.py:87 cli/live_iso.py:90 +msgid "%s was successfully created" +msgstr "" + +#: cli/boot_iso.py:96 cli/live_part.py:147 +msgid "usage: %prog [options] partition (e.g. sdb1)" +msgstr "" + +#: cli/boot_iso.py:101 cli/live_iso.py:130 +msgid "Specify the output file (default '%s'). It will be generated to the current directory." +msgstr "" + +#: cli/boot_iso.py:105 cli/live_iso.py:134 +msgid "Set current directory, so that the 'iso' can be placed there" +msgstr "" + +#: cli/boot_iso.py:109 cli/live_part.py:173 +msgid "Method for boot partition detection: %s (default: label)" +msgstr "" + +#: cli/boot_iso.py:112 cli/live_part.py:176 +msgid "Use the syslinux bootloader (the default is GRUB)" +msgstr "" + +#: cli/boot_iso.py:117 cli/live_iso.py:111 cli/live_part.py:160 +msgid "Path to larchified directory (default %s)" +msgstr "" + +#: cli/boot_iso.py:130 +msgid "Volume label for boot iso (default %s)" +msgstr "" + +#: cli/boot_iso.py:134 +msgid "Use chroot for build" +msgstr "" + +#: cli/boot_iso.py:139 +msgid "" +"You must specify the source partition\n" +msgstr "" + +#: cli/larchify.py:47 +msgid "" +"File '%s' doesn't exist:\n" +" '%s' not an Arch installation?" +msgstr "" + +#: cli/larchify.py:55 +msgid "" +"Building a larch live medium from the running system is\n" +"an error prone process. Changes to the running system\n" +"made while running this function may be only partially\n" +"incorporated into the compressed system images.\n" +"\n" +"Do you wish to continue?" +msgstr "" + +#: cli/larchify.py:136 +msgid "Squashing system.sqf failed" +msgstr "" + +#: cli/larchify.py:227 +msgid "Build customization script failed" +msgstr "" + +#: cli/larchify.py:250 +msgid "Squashing mods.sqf failed" +msgstr "" + +#: cli/larchify.py:256 +msgid "larchify-process completed" +msgstr "" + +#: cli/larchify.py:360 +msgid "%d user account operation(s) failed" +msgstr "" + +#: cli/larchify.py:381 +msgid "" +"No squashfs module found\n" +msgstr "" + +#: cli/larchify.py:393 +msgid "" +"No aufs or unionfs module found\n" +msgstr "" + +#: cli/larchify.py:397 +msgid "" +"Package '%s' is needed by larch systems\n" +msgstr "" + +#: cli/larchify.py:400 +msgid "" +"Without package 'syslinux' you will not be able\n" +"to create syslinux or isolinux booting media\n" +msgstr "" + +#: cli/larchify.py:404 +msgid "" +"Without package 'cdrkit' (or 'cdrtools') you will\n" +"not be able to create CD/DVD media\n" +msgstr "" + +#: cli/larchify.py:408 +msgid "" +"Without package 'eject' you will have problems\n" +"using CD/DVD media\n" +msgstr "" + +#: cli/larchify.py:412 +msgid "" +"WARNING:\n" +"%s\n" +" Continue building?" +msgstr "" + +#: cli/larchify.py:418 +msgid "" +"ERROR:\n" +"%s" +msgstr "" + +#: cli/larchify.py:444 +msgid "" +"Problem running %s:\n" +" %s" +msgstr "" + +#: cli/larchify.py:448 +msgid "" +"More than one kernel found:\n" +" %s" +msgstr "" + +#: cli/larchify.py:451 +msgid "No kernel found" +msgstr "" + +#: cli/larchify.py:459 +msgid "More than one set of kernel modules in %s" +msgstr "" + +#: cli/larchify.py:485 +msgid "" +"WARNING:\n" +" You seem to have installed a package containing modules\n" +"which aren't compatible with your kernel (see log).\n" +"Please check that this won't cause problems.\n" +"Maybe you need the corresponding package for your kernel?\n" +"\n" +" Continue building?" +msgstr "" + +#: cli/larchify.py:494 +msgid "Couldn't find kernel modules" +msgstr "" + +#: cli/larchify.py:513 +msgid "Couldn't find usable mkinitcpio preset: %s" +msgstr "" + +#: cli/larchify.py:554 cli/live_iso.py:99 +msgid "usage: %prog [options]" +msgstr "" + +#: cli/larchify.py:570 +msgid "Reuse previously generated system.sqf" +msgstr "" + +#: cli/larchify.py:573 +msgid "Reuse previously generated locales" +msgstr "" + +#: cli/live_iso.py:85 +msgid "Couldn't perform 'isohybrid' operation on larch 'iso' (Not Critical!)" +msgstr "" + +#: cli/live_iso.py:103 cli/live_part.py:152 +msgid "Profile: 'user:profile-name' or path to profile directory (conflicts with -S)" +msgstr "" + +#: cli/live_iso.py:107 cli/live_part.py:156 +msgid "Source: path to larch medium image (conflicts with -p). It can also be a device ('/dev/...') or an 'iso' file." +msgstr "" + +#: cli/live_iso.py:123 +msgid "Use the isolinux bootloader (the default is GRUB)" +msgstr "" + +#: cli/live_iso.py:127 +msgid "Volume label for iso (default '%s')" +msgstr "" + +#: cli/live_iso.py:138 cli/live_part.py:200 +msgid "Use chroot for build (default when -S not specified)" +msgstr "" + +#: cli/live_iso.py:141 cli/live_part.py:203 +msgid "Don't use chroot for build (default when -S specified)" +msgstr "" + +#: cli/live_iso.py:145 +msgid "Test source medium only (used by gui)" +msgstr "" + +#: cli/live_part.py:70 +msgid "Couldn't format %s" +msgstr "" + +#: cli/live_part.py:80 +msgid "Couldn't get format information for %s" +msgstr "" + +#: cli/live_part.py:84 +msgid "syslinux is only supported on vfat" +msgstr "" + +#: cli/live_part.py:86 +msgid "GRUB is at present only supported on extN" +msgstr "" + +#: cli/live_part.py:98 +msgid "Couldn't mount larch partition, %s" +msgstr "" + +#: cli/live_part.py:118 +msgid "Option '-a' conflicts with option '-A'" +msgstr "" + +#: cli/live_part.py:139 +msgid "%s was successfully written" +msgstr "" + +#: cli/live_part.py:180 +msgid "Volume label for boot partition (default %s)" +msgstr "" + +#: cli/live_part.py:184 +msgid "Don't generate 'larch/larchboot' file" +msgstr "" + +#: cli/live_part.py:187 +msgid "Override profile larch/nosave (force enable session saving) - conflicts with '-A'" +msgstr "" + +#: cli/live_part.py:191 +msgid "Force disabling of session saving - conflicts with '-a'" +msgstr "" + +#: cli/live_part.py:194 +msgid "Don't format partition (only for experts!)" +msgstr "" + +#: cli/live_part.py:197 +msgid "Don't install the bootloader (to the MBR)" +msgstr "" + +#: cli/live_part.py:211 +msgid "" +"You must specify the partition to receive larch\n" +msgstr "" + +#: cli/media_common.py:56 +msgid "Couldn't switch directory to '%s'" +msgstr "" + +#: cli/media_common.py:64 +msgid "Option -C conflicts with -c" +msgstr "" + +#: cli/media_common.py:69 +msgid "Option -S conflicts with -p" +msgstr "" + +#: cli/media_common.py:125 +msgid "Invalid detection method (-d option)" +msgstr "" + +#: cli/media_common.py:144 +msgid "Couldn't bind-mount current directory" +msgstr "" + +#: cli/media_common.py:152 +msgid "File '%s' doesn't exist, '%s' is not a larch medium" +msgstr "" + +#: cli/media_common.py:166 +msgid "Couldn't mount '%s'. Not an iso?" +msgstr "" + +#: cli/media_common.py:176 +msgid "Couldn't mount '%s'" +msgstr "" + +#: cli/media_common.py:185 +msgid "Source doesn't support syslinux" +msgstr "" + +#: cli/media_common.py:189 +msgid "Source doesn't support GRUB" +msgstr "" + +#: cli/media_common.py:205 +msgid "Couldn't bind-mount '%s'" +msgstr "" + +#: cli/media_common.py:232 +msgid "No kernel and/or initramfs" +msgstr "" + +#: cli/media_common.py:244 +msgid "Installation doesn't support syslinux" +msgstr "" + +#: cli/media_common.py:246 +msgid "Installation doesn't support GRUB" +msgstr "" + +#: cli/media_common.py:349 +msgid "The volume label is too long. Use the default (%s)?" +msgstr "" + +#: cli/media_common.py:353 +msgid "Cancelled" +msgstr "" + +#: cli/media_common.py:372 +msgid "Can't boot to label - device has no label" +msgstr "" + +#: cli/media_common.py:383 +msgid "Boot configuration file '%s' not found" +msgstr "" + +#: cli/media_common.py:441 +msgid "Base configuration file (%s) not found" +msgstr "" + +#: cli/userinfo.py:45 +msgid "Invalid 'users' file" +msgstr "" + +#: cli/userinfo.py:67 +msgid "Couldn't add user '%s'" +msgstr "" + +#: cli/userinfo.py:75 +msgid "Couldn't remove user '%s'" +msgstr "" + +#: cli/userinfo.py:90 +msgid "Couldn't save 'users' file" +msgstr "" + +#: gui/controller.py:131 +msgid "Couldn't read file '%s'" +msgstr "" + +#: gui/controller.py:144 +msgid "Couldn't save file '%s'" +msgstr "" + +#: gui/front/page_larchify.py:61 +msgid "No Arch installation at %s" +msgstr "" + +#: gui/layouts/docviewer.uim:35 +msgid "Documentation" +msgstr "" + +#: gui/layouts/docviewer.uim:40 gui/layouts/logger.uim:52 +msgid "Hide" +msgstr "" + +#: gui/layouts/docviewer.uim:41 +msgid "Return to the larch controls" +msgstr "" + +#: gui/layouts/docviewer.uim:47 +msgid "Go back in the viewing history" +msgstr "" + +#: gui/layouts/docviewer.uim:53 +msgid "Go forward in the viewing history" +msgstr "" + +#: gui/layouts/docviewer.uim:60 +msgid "Reload the documentation for the current larch tab" +msgstr "" + +#: gui/layouts/docviewer.uim:67 +msgid "Go to the general larch documentation index" +msgstr "" + +#: gui/layouts/editor.uim:39 +msgid "Editor" +msgstr "" + +#: gui/layouts/editor.uim:45 +msgid "OK" +msgstr "" + +#: gui/layouts/editor.uim:50 gui/layouts/progress.uim:54 +msgid "Cancel" +msgstr "" + +#: gui/layouts/editor.uim:55 +msgid "Revert" +msgstr "" + +#: gui/layouts/editor.uim:56 +msgid "Restore the text to its initial/default state" +msgstr "" + +#: gui/layouts/editor.uim:61 +msgid "Copy" +msgstr "" + +#: gui/layouts/editor.uim:66 +msgid "Cut" +msgstr "" + +#: gui/layouts/editor.uim:71 +msgid "Paste" +msgstr "" + +#: gui/layouts/editor.uim:76 +msgid "Undo" +msgstr "" + +#: gui/layouts/editor.uim:81 +msgid "Redo" +msgstr "" + +#: gui/layouts/editor.uim:88 +msgid "Editing '%s'" +msgstr "" + +#: gui/layouts/logger.uim:37 +msgid "Low-level Command Logging" +msgstr "" + +#: gui/layouts/logger.uim:38 gui/layouts/progress.uim:39 +msgid "Here you can follow the detailed, low-level progress of the commands." +msgstr "" + +#: gui/layouts/logger.uim:47 +msgid "Clear" +msgstr "" + +#: gui/layouts/logger.uim:53 +msgid "Go back to the larch controls" +msgstr "" + +#: gui/layouts/page_installation.uim:38 +msgid "Edit Profile" +msgstr "" + +#: gui/layouts/page_installation.uim:49 +msgid "Edit 'addedpacks'" +msgstr "" + +#: gui/layouts/page_installation.uim:50 +msgid "Edit the list of packages to be installed" +msgstr "" + +#: gui/layouts/page_installation.uim:55 +msgid "Edit 'vetopacks'" +msgstr "" + +#: gui/layouts/page_installation.uim:56 +msgid "Edit the list of packages NOT to install" +msgstr "" + +#: gui/layouts/page_installation.uim:61 +msgid "Edit pacman.conf options" +msgstr "" + +#: gui/layouts/page_installation.uim:62 +msgid "Edit pacman.conf options - not the repositories" +msgstr "" + +#: gui/layouts/page_installation.uim:67 +msgid "Edit pacman.conf repositories" +msgstr "" + +#: gui/layouts/page_installation.uim:68 +msgid "Edit the repository entries for pacman.conf" +msgstr "" + +#: gui/layouts/page_installation.uim:75 +msgid "Tweak Installed Packages" +msgstr "" + +#: gui/layouts/page_installation.uim:81 +msgid "Synchronize db" +msgstr "" + +#: gui/layouts/page_installation.uim:82 +msgid "Synchronize the pacman db on the target (pacman -Sy)" +msgstr "" + +#: gui/layouts/page_installation.uim:87 +msgid "Update / Add package [-U]" +msgstr "" + +#: gui/layouts/page_installation.uim:88 +msgid "Update / Add a package from a package file using pacman -U" +msgstr "" + +#: gui/layouts/page_installation.uim:94 +msgid "Add package(s) [-S]" +msgstr "" + +#: gui/layouts/page_installation.uim:95 +msgid "Add one or more packages (space separated) using pacman -S" +msgstr "" + +#: gui/layouts/page_installation.uim:101 +msgid "Remove package(s) [-Rs]" +msgstr "" + +#: gui/layouts/page_installation.uim:102 +msgid "Remove one or more packages (space separated) using pacman -Rs" +msgstr "" + +#: gui/layouts/page_installation.uim:110 +msgid "Advanced Installation Options" +msgstr "" + +#: gui/layouts/page_installation.uim:116 +msgid "Use project repository list" +msgstr "" + +#: gui/layouts/page_installation.uim:117 +msgid "Enables use of an alternative pacman.conf for installation only" +msgstr "" + +#: gui/layouts/page_installation.uim:125 +msgid "Edit repository list" +msgstr "" + +#: gui/layouts/page_installation.uim:126 +msgid "Edit repository list file used for installation" +msgstr "" + +#: gui/layouts/page_installation.uim:131 +msgid "Edit mirror list used for installation only" +msgstr "" + +#: gui/layouts/page_installation.uim:132 +msgid "A mirror list for the live system should be placed in the overlay" +msgstr "" + +#: gui/layouts/page_installation.uim:139 +msgid "Package Cache" +msgstr "" + +#: gui/layouts/page_installation.uim:146 +msgid "The path to the (host's) package cache" +msgstr "" + +#: gui/layouts/page_installation.uim:150 gui/layouts/page_larchify.uim:153 +#: gui/layouts/page_medium.uim:200 gui/layouts/page_project.uim:145 +msgid "Change" +msgstr "" + +#: gui/layouts/page_installation.uim:151 +msgid "Change the package cache path" +msgstr "" + +#: gui/layouts/page_installation.uim:157 +msgid "Install" +msgstr "" + +#: gui/layouts/page_installation.uim:158 +msgid "This will start the installation to the set path" +msgstr "" + +#: gui/layouts/page_installation.uim:165 +msgid "Editing pacman.conf options only" +msgstr "" + +#: gui/layouts/page_installation.uim:166 +msgid "Editing pacman repositories" +msgstr "" + +#: gui/layouts/page_installation.uim:167 +msgid "Editing mirror list for installation" +msgstr "" + +#: gui/layouts/page_installation.uim:168 +msgid "Enter new package cache path:" +msgstr "" + +#: gui/layouts/page_installation.uim:169 +msgid "Editing pacman repositories for installation" +msgstr "" + +#: gui/layouts/page_installation.uim:170 +msgid "Package to add/update" +msgstr "" + +#: gui/layouts/page_installation.uim:171 +msgid "Packages" +msgstr "" + +#: gui/layouts/page_installation.uim:172 +msgid "" +"Enter the names of packages to install -\n" +" separated by spaces:" +msgstr "" + +#: gui/layouts/page_installation.uim:174 +msgid "" +"Enter the names of packages to remove -\n" +" separated by spaces:" +msgstr "" + +#: gui/layouts/page_larchify.uim:42 +msgid "The system to be compressed must be installed and ready." +msgstr "" + +#: gui/layouts/page_larchify.uim:48 +msgid "Edit supported locales" +msgstr "" + +#: gui/layouts/page_larchify.uim:49 +msgid "Edit the /etc/locale.gen file to select supported glibc locales" +msgstr "" + +#: gui/layouts/page_larchify.uim:55 +msgid "Edit Arch configuration" +msgstr "" + +#: gui/layouts/page_larchify.uim:56 +msgid "Edit the /etc/rc.conf file to configure the live system" +msgstr "" + +#: gui/layouts/page_larchify.uim:62 +msgid "Edit overlay" +msgstr "" + +#: gui/layouts/page_larchify.uim:63 +msgid "Open a file browser on the profile's 'rootoverlay'" +msgstr "" + +#: gui/layouts/page_larchify.uim:69 +msgid "Advanced Options" +msgstr "" + +#: gui/layouts/page_larchify.uim:75 +msgid "Edit mkinitcpio.conf" +msgstr "" + +#: gui/layouts/page_larchify.uim:76 +msgid "Edit the configuration file for generating the initramfs via mkinitcpio" +msgstr "" + +#: gui/layouts/page_larchify.uim:82 +msgid "Generate ssh keys" +msgstr "" + +#: gui/layouts/page_larchify.uim:83 +msgid "The ssh host keys will be pre-generated" +msgstr "" + +#: gui/layouts/page_larchify.uim:88 +msgid "Reuse existing locales" +msgstr "" + +#: gui/layouts/page_larchify.uim:89 +msgid "To save time it may be possible to reuse glibc locales from a previous run" +msgstr "" + +#: gui/layouts/page_larchify.uim:96 +msgid "Reuse existing system.sqf" +msgstr "" + +#: gui/layouts/page_larchify.uim:97 +msgid "Reuse existing system.sqf, to save time if the base system hasn't changed" +msgstr "" + +#: gui/layouts/page_larchify.uim:103 gui/layouts/page_main.uim:86 +msgid "Larchify" +msgstr "" + +#: gui/layouts/page_larchify.uim:104 +msgid "Build the main components of the larch system" +msgstr "" + +#: gui/layouts/page_larchify.uim:111 +msgid "User accounts" +msgstr "" + +#: gui/layouts/page_larchify.uim:125 +msgid "Click on a row to select, click on a selected cell to edit" +msgstr "" + +#: gui/layouts/page_larchify.uim:132 +msgid "Add user" +msgstr "" + +#: gui/layouts/page_larchify.uim:133 +msgid "Create a new user-name" +msgstr "" + +#: gui/layouts/page_larchify.uim:138 +msgid "Delete user" +msgstr "" + +#: gui/layouts/page_larchify.uim:139 +msgid "Remove the selected user-name" +msgstr "" + +#: gui/layouts/page_larchify.uim:144 +msgid "Root password:" +msgstr "" + +#: gui/layouts/page_larchify.uim:149 +msgid "The unencrypted root password for the live system" +msgstr "" + +#: gui/layouts/page_larchify.uim:154 +msgid "Enter a new password for the 'root' user" +msgstr "" + +#: gui/layouts/page_larchify.uim:163 +msgid "Renaming failed, see log" +msgstr "" + +#: gui/layouts/page_larchify.uim:164 +msgid "Couldn't adjust user definition" +msgstr "" + +#: gui/layouts/page_larchify.uim:165 +msgid "Default (/etc/skel)" +msgstr "" + +#: gui/layouts/page_larchify.uim:166 +msgid "" +"This folder will be copied\n" +"to build the user's home folder:" +msgstr "" + +#: gui/layouts/page_larchify.uim:168 +msgid "Choose 'skel' Folder" +msgstr "" + +#: gui/layouts/page_larchify.uim:169 +msgid "Enter login-name for new user:" +msgstr "" + +#: gui/layouts/page_larchify.uim:170 +msgid "Enter root password for live system:" +msgstr "" + +#: gui/layouts/page_larchify.uim:175 +msgid "Group" +msgstr "" + +#: gui/layouts/page_larchify.uim:175 +msgid "Password" +msgstr "" + +#: gui/layouts/page_larchify.uim:175 +msgid "User-Name" +msgstr "" + +#: gui/layouts/page_larchify.uim:176 +msgid "'skel' directory" +msgstr "" + +#: gui/layouts/page_larchify.uim:177 +msgid "Additional Groups" +msgstr "" + +#: gui/layouts/page_larchify.uim:177 +msgid "Expert options" +msgstr "" + +#: gui/layouts/page_main.uim:51 +msgid "Live Arch Linux Construction Kit" +msgstr "" + +#: gui/layouts/page_main.uim:55 +msgid "View Log" +msgstr "" + +#: gui/layouts/page_main.uim:56 +msgid "This button switches to the log viewer" +msgstr "" + +#: gui/layouts/page_main.uim:61 +msgid "Help" +msgstr "" + +#: gui/layouts/page_main.uim:62 +msgid "This button switches to the documentation viewer" +msgstr "" + +#: gui/layouts/page_main.uim:67 +msgid "Quit" +msgstr "" + +#: gui/layouts/page_main.uim:68 +msgid "Stop the current action and quit the program" +msgstr "" + +#: gui/layouts/page_main.uim:84 +msgid "Project Settings" +msgstr "" + +#: gui/layouts/page_main.uim:85 +msgid "Installation" +msgstr "" + +#: gui/layouts/page_main.uim:87 +msgid "Medium Profile" +msgstr "" + +#: gui/layouts/page_main.uim:88 +msgid "Make Medium" +msgstr "" + +#: gui/layouts/page_main.uim:96 +msgid "Authentication failure" +msgstr "" + +#: gui/layouts/page_main.uim:97 +msgid "Enter the password to run as administrator:" +msgstr "" + +#: gui/layouts/page_medium.uim:42 +msgid "Select larch source" +msgstr "" + +#: gui/layouts/page_medium.uim:52 +msgid "larchified system" +msgstr "" + +#: gui/layouts/page_medium.uim:53 +msgid "Use the system prepared within the larch build directory" +msgstr "" + +#: gui/layouts/page_medium.uim:59 +msgid "Device" +msgstr "" + +#: gui/layouts/page_medium.uim:60 +msgid "Use a system on a mountable device" +msgstr "" + +#: gui/layouts/page_medium.uim:65 +msgid "'iso' file" +msgstr "" + +#: gui/layouts/page_medium.uim:66 +msgid "Use a system on an 'iso' file" +msgstr "" + +#: gui/layouts/page_medium.uim:71 +msgid "Path" +msgstr "" + +#: gui/layouts/page_medium.uim:72 +msgid "Use a directory within the filesystem" +msgstr "" + +#: gui/layouts/page_medium.uim:78 +msgid "The location from where the larch system will be fetched" +msgstr "" + +#: gui/layouts/page_medium.uim:83 gui/layouts/page_medium.uim:114 +msgid "Choose" +msgstr "" + +#: gui/layouts/page_medium.uim:84 +msgid "Select the source location" +msgstr "" + +#: gui/layouts/page_medium.uim:91 +msgid "Write to partition" +msgstr "" + +#: gui/layouts/page_medium.uim:92 +msgid "Don't create an 'iso' (CD/DVD), write the larch system to a partition (e.g. USB-stick)" +msgstr "" + +#: gui/layouts/page_medium.uim:104 +msgid "Partition:" +msgstr "" + +#: gui/layouts/page_medium.uim:109 +msgid "The partition to which the larch system is to be installed" +msgstr "" + +#: gui/layouts/page_medium.uim:115 +msgid "Select the partition to receive the larch system" +msgstr "" + +#: gui/layouts/page_medium.uim:120 +msgid "Don't format" +msgstr "" + +#: gui/layouts/page_medium.uim:121 +msgid "" +"Copy the data to the partition without formatting first\n" +"(not the normal procedure, NOT RECOMMENDED!)" +msgstr "" + +#: gui/layouts/page_medium.uim:127 +msgid "Don't install the bootloader" +msgstr "" + +#: gui/layouts/page_medium.uim:128 +msgid "" +"The bootloader will not be installed, leaving the mbr untouched\n" +"(you'll need to provide some other means of booting)" +msgstr "" + +#: gui/layouts/page_medium.uim:135 +msgid "Not bootable via search" +msgstr "" + +#: gui/layouts/page_medium.uim:136 +msgid "" +"Don't create the file 'larch/larchboot':\n" +" the medium will only be bootable by uuid, label or partition name" +msgstr "" + +#: gui/layouts/page_medium.uim:143 +msgid "Enable session-saving" +msgstr "" + +#: gui/layouts/page_medium.uim:144 +msgid "Can override profile's 'larch/nosave' file, to make session-saving possible in that case too" +msgstr "" + +#: gui/layouts/page_medium.uim:153 +msgid "Medium Detection" +msgstr "" + +#: gui/layouts/page_medium.uim:154 +msgid "Choose how the boot scripts determine where to look for the larch system (ONLY ON PARTITIONED MEDIA)" +msgstr "" + +#: gui/layouts/page_medium.uim:161 +msgid "UUID" +msgstr "" + +#: gui/layouts/page_medium.uim:162 +msgid "Use the partition's UUID to find it" +msgstr "" + +#: gui/layouts/page_medium.uim:167 +msgid "LABEL" +msgstr "" + +#: gui/layouts/page_medium.uim:168 +msgid "Use the partition's label to find it" +msgstr "" + +#: gui/layouts/page_medium.uim:173 +msgid "Partition" +msgstr "" + +#: gui/layouts/page_medium.uim:174 +msgid "Use the partition's name (/dev/sdb1, etc.) to find it" +msgstr "" + +#: gui/layouts/page_medium.uim:179 +msgid "Search (for larchboot)" +msgstr "" + +#: gui/layouts/page_medium.uim:180 +msgid "Test all CD/DVD devices and partitions until the file 'larch/larchboot' is found" +msgstr "" + +#: gui/layouts/page_medium.uim:190 +msgid "Volume Label:" +msgstr "" + +#: gui/layouts/page_medium.uim:195 +msgid "The length may not exceed 16 bytes, 11 for vfat(syslinux)" +msgstr "" + +#: gui/layouts/page_medium.uim:201 +msgid "Enter a new label for the volume, empty to use default" +msgstr "" + +#: gui/layouts/page_medium.uim:209 +msgid "Bootloader" +msgstr "" + +#: gui/layouts/page_medium.uim:210 +msgid "You can choose between GRUB and syslinux/isolinux as bootloader" +msgstr "" + +#: gui/layouts/page_medium.uim:218 +msgid "Use GRUB as bootloader" +msgstr "" + +#: gui/layouts/page_medium.uim:224 +msgid "Use syslinux (partition) or isolinux (CD/DVD) as bootloader" +msgstr "" + +#: gui/layouts/page_medium.uim:232 +msgid "Use chroot" +msgstr "" + +#: gui/layouts/page_medium.uim:233 +msgid "" +"Use the larch installation for the build process\n" +" - the default should be alright in most cases" +msgstr "" + +#: gui/layouts/page_medium.uim:240 +msgid "Create boot iso" +msgstr "" + +#: gui/layouts/page_medium.uim:241 +msgid "Create a small boot iso for this device (for machines that can't boot from USB)" +msgstr "" + +#: gui/layouts/page_medium.uim:247 +msgid "Write the larch medium" +msgstr "" + +#: gui/layouts/page_medium.uim:248 +msgid "The larch image will be written to the 'iso' file or to the partition, as selected" +msgstr "" + +#: gui/layouts/page_medium.uim:256 +msgid "Select source medium folder" +msgstr "" + +#: gui/layouts/page_medium.uim:257 +msgid "Select source iso file" +msgstr "" + +#: gui/layouts/page_medium.uim:258 +msgid "larch iso images" +msgstr "" + +#: gui/layouts/page_medium.uim:259 +msgid "Select unmounted partition" +msgstr "" + +#: gui/layouts/page_medium.uim:260 +msgid "larch system source:" +msgstr "" + +#: gui/layouts/page_medium.uim:261 +msgid "" +"Device to receive larch system.\n" +"WARNING: Be very careful in choosing here,\n" +"if you choose the wrong one you might\n" +"seriously damage your system!" +msgstr "" + +#: gui/layouts/page_medium.uim:265 +msgid "Invalid larch medium folder: %s" +msgstr "" + +#: gui/layouts/page_medium.uim:266 +msgid "Volume label (clear to use default):" +msgstr "" + +#: gui/layouts/page_medium.uim:267 +msgid "Save 'iso' to ..." +msgstr "" + +#: gui/layouts/page_mediumprofile.uim:40 +msgid "Edit boot entries" +msgstr "" + +#: gui/layouts/page_mediumprofile.uim:41 +msgid "Edit the file determining the boot entries" +msgstr "" + +#: gui/layouts/page_mediumprofile.uim:46 +msgid "Edit grub template" +msgstr "" + +#: gui/layouts/page_mediumprofile.uim:47 +msgid "Edit grub's configuration file, but not the larch boot entries" +msgstr "" + +#: gui/layouts/page_mediumprofile.uim:53 +msgid "Edit syslinux/isolinux template" +msgstr "" + +#: gui/layouts/page_mediumprofile.uim:54 +msgid "Edit the syslinux/isolinux configuration file, but not the larch boot entries" +msgstr "" + +#: gui/layouts/page_mediumprofile.uim:60 +msgid "Edit cd-root (open in file browser)" +msgstr "" + +#: gui/layouts/page_mediumprofile.uim:61 +msgid "Open a file browser on the profile's 'cd-root' folder" +msgstr "" + +#: gui/layouts/page_mediumprofile.uim:83 +msgid "Disable session saving" +msgstr "" + +#: gui/layouts/page_mediumprofile.uim:84 +msgid "" +"If checked, the medium will have the file 'larch/nosave',\n" +"which only has an effect on writable media." +msgstr "" + +#: gui/layouts/page_project.uim:37 +msgid "Profile" +msgstr "" + +#: gui/layouts/page_project.uim:48 +msgid "Select:" +msgstr "" + +#: gui/layouts/page_project.uim:54 +msgid "Choose a profile from those already in your larch working folder" +msgstr "" + +#: gui/layouts/page_project.uim:60 +msgid "Browse for Profile" +msgstr "" + +#: gui/layouts/page_project.uim:61 +msgid "Fetch a profile from the file-system" +msgstr "" + +#: gui/layouts/page_project.uim:66 +msgid "Rename" +msgstr "" + +#: gui/layouts/page_project.uim:67 +msgid "Rename the current profile" +msgstr "" + +#: gui/layouts/page_project.uim:72 gui/layouts/page_project.uim:126 +msgid "Delete" +msgstr "" + +#: gui/layouts/page_project.uim:73 +msgid "Delete an unused profile" +msgstr "" + +#: gui/layouts/page_project.uim:78 +msgid "Copy to ..." +msgstr "" + +#: gui/layouts/page_project.uim:79 +msgid "Copy the current profile to somehere else" +msgstr "" + +#: gui/layouts/page_project.uim:86 +msgid "Advanced Project Options" +msgstr "" + +#: gui/layouts/page_project.uim:110 +msgid "Choose Existing Project:" +msgstr "" + +#: gui/layouts/page_project.uim:114 +msgid "Choose a project from those already defined" +msgstr "" + +#: gui/layouts/page_project.uim:120 +msgid "New Project" +msgstr "" + +#: gui/layouts/page_project.uim:121 +msgid "Create a new project" +msgstr "" + +#: gui/layouts/page_project.uim:127 +msgid "Delete a project" +msgstr "" + +#: gui/layouts/page_project.uim:132 +msgid "Installation Path" +msgstr "" + +#: gui/layouts/page_project.uim:140 +msgid "The root directory of the Arch installation to larchify" +msgstr "" + +#: gui/layouts/page_project.uim:146 +msgid "Change the root directory of the Arch installation" +msgstr "" + +#: gui/layouts/page_project.uim:153 +msgid "Select profile source folder" +msgstr "" + +#: gui/layouts/page_project.uim:154 +msgid "Destination profile exists - replace it?" +msgstr "" + +#: gui/layouts/page_project.uim:155 +msgid "Enter new name for current profile:" +msgstr "" + +#: gui/layouts/page_project.uim:156 +msgid "Profile '%s' exists already" +msgstr "" + +#: gui/layouts/page_project.uim:157 +msgid "Can't rename the profile, it is in use by other projects" +msgstr "" + +#: gui/layouts/page_project.uim:159 +msgid "Save profile folder" +msgstr "" + +#: gui/layouts/page_project.uim:160 +msgid "Destination exists - replace it?" +msgstr "" + +#: gui/layouts/page_project.uim:161 +msgid "Select the profile for deletion" +msgstr "" + +#: gui/layouts/page_project.uim:162 +msgid "Remove Profile" +msgstr "" + +#: gui/layouts/page_project.uim:163 +msgid "There are no profiles which can be deleted - all are in use" +msgstr "" + +#: gui/layouts/page_project.uim:165 +msgid "Couldn't delete profile '%s' - check permissions" +msgstr "" + +#: gui/layouts/page_project.uim:167 +msgid "" +"An empty path here will reset to the default.\n" +" WARNING: Double check your path -\n" +" If you make a mistake here it could destroy your system!\n" +"\n" +"Enter new installation path:" +msgstr "" + +#: gui/layouts/page_project.uim:171 +msgid "Enter name for new project:" +msgstr "" + +#: gui/layouts/page_project.uim:172 +msgid "Project '%s' already exists" +msgstr "" + +#: gui/layouts/page_project.uim:173 +msgid "Select the project for deletion" +msgstr "" + +#: gui/layouts/page_project.uim:174 +msgid "Remove Project" +msgstr "" + +#: gui/layouts/page_project.uim:175 +msgid "There are no projects which can be deleted" +msgstr "" + +#: gui/layouts/page_project.uim:176 +msgid "'%s' is not a profile folder" +msgstr "" + +#: gui/layouts/page_project.uim:177 +msgid "The path '%s' is already in use, not saving" +msgstr "" + +#: gui/layouts/progress.uim:38 +msgid "Processing ..." +msgstr "" + +#: gui/layouts/progress.uim:49 +msgid "An indication of the progress of the current operation, if possible" +msgstr "" + +#: gui/layouts/progress.uim:55 +msgid "Stop the current action" +msgstr "" + +#: gui/layouts/progress.uim:60 +msgid "Done" +msgstr "" + +#: gui/project.py:187 +msgid "Working Profiles" +msgstr "" + +#: gui/project.py:188 +msgid "Examples" +msgstr "" + +#: gui/project.py:189 +msgid "File-system" +msgstr "" + diff --git a/build_tools/l7/larch0/i18n/zh/LC_MESSAGES/larch.mo b/build_tools/l7/larch0/i18n/zh/LC_MESSAGES/larch.mo Binary files differnew file mode 100644 index 0000000..a758d63 --- /dev/null +++ b/build_tools/l7/larch0/i18n/zh/LC_MESSAGES/larch.mo diff --git a/build_tools/l7/larch0/i18n/zh/LC_MESSAGES/zh.po b/build_tools/l7/larch0/i18n/zh/LC_MESSAGES/zh.po new file mode 100644 index 0000000..0370299 --- /dev/null +++ b/build_tools/l7/larch0/i18n/zh/LC_MESSAGES/zh.po @@ -0,0 +1,1231 @@ +msgid "" +msgstr "" +"Project-Id-Version: larch\n" +"POT-Creation-Date: 2010-03-07 20:42+CET\n" +"PO-Revision-Date: 2010-03-09 01:22+0800\n" +"Last-Translator: Dong-Jun Wu <ziyawu@gmail.com>\n" +"Language-Team: Chinese Traditional <zh-l10n@linux.org.tw>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Chinese (Traditional)\n" +"X-Poedit-Country: TAIWAN\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: larch.py:204 +msgid "Please enter root password" +msgstr "請輸入 root 密碼" + +#: larch.py:216 +msgid "Incorrect root password" +msgstr "root 密碼不正確" + +#: larch.py:219 +msgid "No root password, cancelling operation" +msgstr "沒有 root 密碼,正在取消操作" + +#: larch.py:235 +msgid "Supershell couldn't be started" +msgstr "無法啟動 Supershell" + +#: larch.py:322 +msgid "Enter '%s' application ('$' for path argument):" +msgstr "輸入「%s」應用程式 (路徑參數「$」):" + +#: larch.py:430 +msgid "Editing '%s'" +msgstr "正在編輯「%s」" + +#: larch.py:464 +msgid "Platform error, installed system is %s" +msgstr "平台錯誤,已安裝的系統為 %s" + +#: larch.py:469 +msgid "No installed system found" +msgstr "沒有找到已安裝的系統" + +#: larch.py:519 +msgid "Couldn't read file '%s'" +msgstr "無法讀取檔案「%s」" + +#: larch.py:528 +msgid "Couldn't save file '%s'" +msgstr "無法儲存檔案「%s」" + +#: larch.py:532 +msgid "CONFIG ERROR" +msgstr "組態設定錯誤" + +#: larch.py:536 +msgid "BUILD ERROR" +msgstr "建構錯誤" + +#: larch.py:540 +msgid "FATAL ERROR" +msgstr "嚴重錯誤" + +#: larch.py:548 +msgid "This error could not be handled" +msgstr "無法處理這個錯誤" + +#: larch.py:624 +msgid "" +" Please see '%s/%s'\n" +" for usage information.\n" +msgstr "" +" 請看「%s/%s」\n" +" 獲得使用方法資訊。\n" + +#: larch.py:642 +msgid "ERROR: Unsupported option - '%s'\n" +msgstr "錯誤:不支援的操作 -「%s」\n" + +#: larch.py:643 +msgid "Start without arguments or with '--pyqt' to start pyqt gui.\n" +msgstr "不使用參數啟動或用「--pyqt」啟動 pyqt 圖形介面。\n" + +#: larch.py:644 +msgid "The command line interface is started with '-c':\n" +msgstr "用「-c」啟動為命令列介面:\n" + +#: modules/base.py:89 +msgid "No pacman executable found" +msgstr "沒有找到 pacman 可執行檔" + +#: modules/base.py:117 +msgid "Unknown platform: '%s'" +msgstr "未知的平台:「%s」" + +#: modules/base.py:156 +msgid "Unknown configuration option: %s\n" +msgstr "未知的組態設定選項:%s\n" + +#: modules/base.py:216 +msgid "No name for new profile" +msgstr "新描述檔沒有名稱" + +#: modules/base.py:220 +msgid "Profile '%s' already exists" +msgstr "描述檔「%s」已存在" + +#: modules/base.py:234 +msgid "Profile '%s' exists already." +msgstr "描述檔「%s」已存在。" + +#: modules/build.py:58 +msgid "" +"Building a larch live medium from the running system is\n" +"an error prone process. Changes to the running system\n" +"made while running this function may be only partially\n" +"incorporated into the compressed system images.\n" +"\n" +"Do you wish to continue?" +msgstr "" +"從執行中的系統建構 larch 即時媒體是一個容易出錯的過\n" +"程。變為執行中的系統會造成執行這項功能時可能只有\n" +"部份被納入壓縮的系統映像檔。\n" +"\n" +"您想要繼續嗎?" + +#: modules/build.py:112 +msgid "Squashing system.sqf failed" +msgstr "擠壓 system.sqf 失敗" + +#: modules/build.py:184 +msgid "Squashing mods.sqf failed" +msgstr "擠壓 mods.sqf 失敗" + +#: modules/build.py:203 +msgid "No squashfs module found\n" +msgstr "沒有找到 squashfs 模組\n" + +#: modules/build.py:213 +msgid "No aufs or unionfs module found\n" +msgstr "沒有找到 aufs 或 unionfs 模組\n" + +#: modules/build.py:217 +msgid "Package '%s' is needed by larch systems\n" +msgstr "larch 系統需要套件「%s」\n" + +#: modules/build.py:220 +msgid "" +"Without package 'syslinux' you will not be able\n" +"to create syslinux or isolinux booting media\n" +msgstr "" +"沒有套件「syslinux」您會無法建\n" +"立 syslinux 或 isolinux 開機媒體\n" + +#: modules/build.py:224 +msgid "" +"Without package 'cdrkit' (or 'cdrtools') you will\n" +"not be able to create CD/DVD media\n" +msgstr "" +"沒有套件「cdrkit」(或「cdrtools」) 您會\n" +"無法建立 CD/DVD 媒體\n" + +#: modules/build.py:228 +msgid "" +"Without package 'eject' you will have problems\n" +"using CD/DVD media\n" +msgstr "" +"沒有「eject」套件您使用 CD/DVD 時\n" +"會發生問題\n" + +#: modules/build.py:232 +msgid "" +"WARNING:\n" +"%s\n" +" Continue building?" +msgstr "" +"警告:\n" +"%s\n" +" 要繼續建構嗎?" + +#: modules/build.py:238 +msgid "" +"ERROR:\n" +"%s" +msgstr "" +"錯誤:\n" +"%s" + +#: modules/build.py:265 +msgid "" +"Problem running %s:\n" +" %s" +msgstr "" +"執行 %s 發生問題:\n" +" %s" + +#: modules/build.py:270 +msgid "" +"More than one kernel found:\n" +" %s" +msgstr "" +"找到多個內核:\n" +" %s" + +#: modules/build.py:274 +msgid "No kernel found" +msgstr "沒有找到內核" + +#: modules/build.py:282 +msgid "More than one set of kernel modules in %s" +msgstr "在 %s 裡有多組內核模組" + +#: modules/build.py:308 +msgid "" +"WARNING:\n" +" You seem to have installed a package containing modules\n" +"which aren't compatible with your kernel (see log).\n" +"Please check that this won't cause problems.\n" +"Maybe you need the corresponding package for your kernel?\n" +"\n" +" Continue building?" +msgstr "" +"警告:\n" +" 您似乎安裝了一個含有與您的內核不相容模組的套件\n" +"(詳見日誌)。請確認這樣不會造成任何問題。\n" +"或許您需要和您的內核對應的套件?\n" +"\n" +" 要續續建構嗎?" + +#: modules/build.py:317 +msgid "Couldn't find kernel modules" +msgstr "無法找到內核模組" + +#: modules/build.py:337 +msgid "Couldn't find usable mkinitcpio preset: %s" +msgstr "無法找到可用的 mkinitcpio 預設:%s" + +#: modules/buildpage.py:47 +msgid "The system to be compressed must be installed and ready." +msgstr "要壓縮系統必須已安裝並準備完畢。" + +#: modules/buildpage.py:48 +msgid "Edit supported locales" +msgstr "編輯支援的語系" + +#: modules/buildpage.py:49 +msgid "Edit the /etc/locale.gen file to select supported glibc locales" +msgstr "編輯 /etc/locale.gen 檔來選擇支援的 glibc 語系" + +#: modules/buildpage.py:50 +msgid "Edit Arch configuration file (/etc/rc.conf)" +msgstr "編輯 Arch 組態設定檔 (/etc/rc.conf)" + +#: modules/buildpage.py:51 +msgid "Edit the /etc/rc.conf file to configure the live system" +msgstr "編輯 /etc/rc.conf 檔案來設定即時系統" + +#: modules/buildpage.py:53 +#: modules/installpage.py:60 +#: modules/projectpage.py:68 +msgid "Advanced Options" +msgstr "進階選項" + +#: modules/buildpage.py:54 +msgid "Edit mkinitcpio.conf" +msgstr "編輯 mkinitcpio.conf" + +#: modules/buildpage.py:55 +msgid "Edit the configuration file for generating the initramfs via mkinitcpio" +msgstr "編輯組態設定檔以透過 mkinitcpio 生成 initramfs" + +#: modules/buildpage.py:56 +msgid "Edit overlay (open in file browser)" +msgstr "編輯 overlay (用檔案瀏覽程式開啟)" + +#: modules/buildpage.py:57 +msgid "Open a file browser on the profile's 'rootoverlay'" +msgstr "用檔案瀏覽程式開啟描述檔的「rootoverlay」" + +#: modules/buildpage.py:58 +msgid "Generate ssh keys" +msgstr "生成 ssh 鑰匙" + +#: modules/buildpage.py:59 +msgid "Enables pre-generation of ssh keys" +msgstr "啟用預先生成 ssh 鑰匙" + +#: modules/buildpage.py:60 +msgid "Reuse existing system.sqf" +msgstr "重複使用現有的 system.sqf" + +#: modules/buildpage.py:61 +msgid "Reuse existing system.sqf, to save time if the base system hasn't changed" +msgstr "重複使用現有的 system.sqf,如果系統沒有變更則儲存時間" + +#: modules/buildpage.py:62 +#: modules/gui.py:65 +msgid "Larchify" +msgstr "Larchify" + +#: modules/buildpage.py:63 +msgid "Build the main components of the larch system" +msgstr "建構 larch 系統的主要組成元件" + +#: modules/buildpage.py:81 +msgid "No Arch installation at %s" +msgstr "沒有 Arch 安裝於 %s" + +#: modules/console.py:91 +msgid "Information" +msgstr "資訊" + +#: modules/console.py:94 +msgid "Press <Enter> to continue" +msgstr "請按 <Enter> 繼續" + +#: modules/console.py:100 +msgid "Confirmation" +msgstr "確認" + +#: modules/console.py:105 +#: modules/console.py:204 +msgid "Yes" +msgstr "是" + +#: modules/console.py:105 +#: modules/console.py:205 +msgid "No" +msgstr "否" + +#: modules/console.py:113 +msgid "Input Required" +msgstr "需要輸入" + +#: modules/console.py:135 +msgid "ERROR" +msgstr "錯誤" + +#: modules/console.py:148 +msgid "Unknown command: %s" +msgstr "未知的指令:%s" + +#: modules/console.py:206 +msgid "Project Name:" +msgstr "專案名稱:" + +#: modules/console.py:207 +msgid "Profile:" +msgstr "描述檔:" + +#: modules/console.py:208 +#: modules/projectpage.py:79 +msgid "Installation Path:" +msgstr "安裝路徑:" + +#: modules/console.py:209 +msgid "Working Directory:" +msgstr "工作目錄:" + +#: modules/console.py:210 +msgid "Platform:" +msgstr "平台:" + +#: modules/console.py:211 +msgid "Installation Mirror:" +msgstr "安裝鏡像:" + +#: modules/console.py:212 +msgid "--- use mirror:" +msgstr "--- 使用鏡像:" + +#: modules/console.py:213 +msgid "Use Project Mirrorlist:" +msgstr "使用專案鏡像清單:" + +#: modules/console.py:214 +msgid "Bootloader:" +msgstr "開機管理程式:" + +#: modules/console.py:215 +msgid "Medium Detection:" +msgstr "偵測媒體:" + +#: modules/console.py:216 +msgid "Medium Label:" +msgstr "媒體標籤:" + +#: modules/console.py:217 +msgid "iso 'application ID':" +msgstr "iso '應用程式 ID':" + +#: modules/console.py:218 +msgid "iso 'publisher':" +msgstr "iso '發行人':" + +#: modules/console.py:219 +#: modules/installpage.py:75 +msgid "Package Cache:" +msgstr "套件快取:" + +#: modules/console.py:222 +msgid "Projects:\n" +msgstr "專案:\n" + +#: modules/console.py:227 +msgid "Profiles (in %s):\n" +msgstr "描述檔 (在 %s 中):\n" + +#: modules/console.py:232 +msgid "Example Profiles (in %s):\n" +msgstr "範例描述檔 (在 %s 中):\n" + +#: modules/console.py:237 +msgid "Available Partitions:\n" +msgstr "可用的分割區:\n" + +#: modules/console.py:247 +#: modules/console.py:256 +msgid "Unknown project name: '%s'" +msgstr "未知的專案名稱:「%s」" + +#: modules/console.py:264 +#: modules/console.py:276 +msgid "Unknown profile name: '%s'" +msgstr "未知的描述檔名稱:「%s」" + +#: modules/console.py:288 +msgid "Available platforms: %s" +msgstr "可用的平台:%s" + +#: modules/console.py:314 +msgid "Invalid bootloader: %s" +msgstr "無效的開機管理程式:%s" + +#: modules/gui.py:49 +msgid "<em>larch</em> Live Arch Linux Construction Kit" +msgstr "<em>larch</em> Live Arch Linux 建構工具組" + +#: modules/gui.py:50 +msgid "View Log" +msgstr "檢視日誌" + +#: modules/gui.py:51 +msgid "This button switches to the log viewer" +msgstr "這個按鈕可切換到日誌檢視器" + +#: modules/gui.py:52 +msgid "Help" +msgstr "說明" + +#: modules/gui.py:53 +msgid "This button switches to the documentation viewer" +msgstr "這個按鈕可切換到文件檢視器" + +#: modules/gui.py:54 +msgid "Quit" +msgstr "離開" + +#: modules/gui.py:55 +msgid "Stop the current action and quit the program" +msgstr "停止目前的動作並離開程式" + +#: modules/gui.py:63 +msgid "Project Settings" +msgstr "專案設定值" + +#: modules/gui.py:64 +msgid "Installation" +msgstr "安裝" + +#: modules/gui.py:66 +msgid "Prepare Medium" +msgstr "準備媒體" + +#: modules/gui.py:67 +msgid "Installation Tweaks" +msgstr "安裝微調" + +#: modules/gui.py:113 +msgid "Processing ..." +msgstr "正在處理..." + +#: modules/gui.py:114 +#: modules/gui.py:162 +msgid "Here you can follow the detailed, low-level progress of the commands." +msgstr "您可以在這裡追查底層指令進度的詳細資訊。" + +#: modules/gui.py:118 +msgid "An indication of the progress of the current operation, if possible" +msgstr "顯示目前操作的進度,如果可能的話" + +#: modules/gui.py:119 +#: modules/gui.py:254 +msgid "Cancel" +msgstr "取消" + +#: modules/gui.py:120 +msgid "Stop the current action" +msgstr "停止目前動作" + +#: modules/gui.py:121 +msgid "Done" +msgstr "完成" + +#: modules/gui.py:161 +msgid "Low-level Command Logging" +msgstr "底層指令日誌" + +#: modules/gui.py:165 +msgid "Clear" +msgstr "清除" + +#: modules/gui.py:166 +#: modules/gui.py:196 +msgid "Hide" +msgstr "隱藏" + +#: modules/gui.py:167 +#: modules/gui.py:197 +msgid "Go back to the larch controls" +msgstr "回到 larch 控制" + +#: modules/gui.py:194 +msgid "Documentation" +msgstr "文件" + +#: modules/gui.py:199 +msgid "Go back in the viewing history" +msgstr "在檢視歷史中向後" + +#: modules/gui.py:201 +msgid "Go forward in the viewing history" +msgstr "在檢視歷史中向前" + +#: modules/gui.py:203 +msgid "Reload the documentation for the current larch tab" +msgstr "重新載入目前 larch 分頁的文件" + +#: modules/gui.py:205 +msgid "Go to the general larch documentation index" +msgstr "前往一般 larch 文件索引" + +#: modules/gui.py:250 +msgid "Editor" +msgstr "編輯器" + +#: modules/gui.py:253 +msgid "OK" +msgstr "確定" + +#: modules/gui.py:255 +msgid "Revert" +msgstr "回復" + +#: modules/gui.py:256 +msgid "Restore the text to its initial state" +msgstr "將文字還原成初始狀態" + +#: modules/gui.py:257 +msgid "Copy" +msgstr "複製" + +#: modules/gui.py:258 +msgid "Cut" +msgstr "剪下" + +#: modules/gui.py:259 +msgid "Paste" +msgstr "貼上" + +#: modules/gui.py:260 +msgid "Undo" +msgstr "復原" + +#: modules/gui.py:261 +msgid "Redo" +msgstr "取消復原" + +#: modules/installation.py:111 +#: modules/installpage.py:136 +msgid "No 'mirrorlist' file found" +msgstr "沒有找到「mirrorlist」檔案" + +#: modules/installation.py:156 +msgid "Couldn't write to the installation path (%s)." +msgstr "無法寫入到安裝路徑 (%s)。" + +#: modules/installation.py:160 +msgid "The installation path (%s) is mounted 'nodev'." +msgstr "安裝路徑 (%s) 掛載為「nodev」。" + +#: modules/installation.py:168 +msgid "The installation path (%s) is mounted 'noexec'." +msgstr "安裝路徑 (%s) 掛載為「noexec」。" + +#: modules/installation.py:211 +msgid "Package installation failed" +msgstr "套件安裝失敗" + +#: modules/installation.py:256 +msgid "Couldn't synchronize pacman database (pacman -Sy)" +msgstr "無法同步 pacman 資料庫 (pacman -Sy)" + +#: modules/installpage.py:50 +msgid "Edit Profile" +msgstr "編輯描述檔" + +#: modules/installpage.py:51 +msgid "Edit 'addedpacks'" +msgstr "編輯「addedpacks」" + +#: modules/installpage.py:52 +msgid "Edit the list of packages to be installed" +msgstr "編輯要安裝的套件清單" + +#: modules/installpage.py:53 +msgid "Edit 'vetopacks'" +msgstr "編輯「vetopacks」" + +#: modules/installpage.py:54 +msgid "Edit the list of group member packages NOT to install" +msgstr "編輯不要安裝的群組成員套件清單" + +#: modules/installpage.py:55 +msgid "Edit pacman.conf options" +msgstr "編輯 pacman.conf 選項" + +#: modules/installpage.py:56 +msgid "Edit pacman.conf options - not the repositories" +msgstr "編輯 pacman.conf 選項 - 不是套件庫" + +#: modules/installpage.py:57 +msgid "Edit pacman.conf repositories" +msgstr "編輯 pacman.conf 套件庫" + +#: modules/installpage.py:58 +msgid "Edit the repository entries for pacman.conf" +msgstr "編輯 pacman.conf 的套件庫項目" + +#: modules/installpage.py:62 +msgid "Use project mirrorlist" +msgstr "使用專案鏡像點清單" + +#: modules/installpage.py:63 +msgid "Enables use of the mirrorlist file saved in the working directory, for installation only" +msgstr "啟用使用儲存在工作目錄的鏡像清單檔案,只在安裝時" + +#: modules/installpage.py:64 +msgid "Edit project mirrorlist" +msgstr "編輯專案鏡像清單" + +#: modules/installpage.py:65 +msgid "Edit mirrorlist in working directory" +msgstr "編輯在工作目錄中的鏡像清單" + +#: modules/installpage.py:67 +msgid "Use special mirror for installation" +msgstr "使用安裝專用鏡像" + +#: modules/installpage.py:68 +msgid "Allows a specific (e.g. local) mirror to be used just for the installation" +msgstr "給予只用來安裝的特定 (例如本機) 鏡像" + +#: modules/installpage.py:69 +msgid "URL:" +msgstr "網址:" + +#: modules/installpage.py:71 +msgid "The url of the installation mirror" +msgstr "安裝鏡像的網址" + +#: modules/installpage.py:72 +#: modules/installpage.py:78 +#: modules/mediumpage.py:75 +#: modules/mediumpage.py:81 +#: modules/mediumpage.py:106 +#: modules/projectpage.py:82 +msgid "Change" +msgstr "變更" + +#: modules/installpage.py:73 +msgid "Change the installation mirror path" +msgstr "變更安裝鏡像路徑" + +#: modules/installpage.py:77 +msgid "The path to the (host's) package cache" +msgstr "(主機的) 套件快取的路徑" + +#: modules/installpage.py:79 +msgid "Change the package cache path" +msgstr "變更套件快取路徑" + +#: modules/installpage.py:81 +msgid "Install" +msgstr "安裝" + +#: modules/installpage.py:82 +msgid "This will start the installation to the set path" +msgstr "這會開始安裝到設定的路徑" + +#: modules/installpage.py:120 +msgid "Editing pacman.conf options only" +msgstr "只編輯 pacman.conf 選項" + +#: modules/installpage.py:126 +msgid "Editing pacman.conf repositories only" +msgstr "只編輯 pacman.conf 套件庫" + +#: modules/installpage.py:138 +msgid "Editing mirrorlist: Uncomment ONE entry" +msgstr "編輯鏡像清單:將一個項目取消註解" + +#: modules/installpage.py:154 +msgid "Enter new local mirror path:" +msgstr "輸入新本機鏡像路徑:" + +#: modules/installpage.py:160 +msgid "You must specify a URL, with protocol, e.g. 'file:///a/b/c'" +msgstr "您必須指定一個網址,使用如「file:///a/b/c」的協定" + +#: modules/installpage.py:174 +msgid "Enter new package cache path:" +msgstr "輸入新套件快取路徑:" + +#: modules/medium.py:82 +msgid "Can't boot to label - no label supplied" +msgstr "無法開機到標籤 - 沒有提供標籤" + +#: modules/medium.py:208 +msgid "Couldn't format %s" +msgstr "無法格式化 %s" + +#: modules/medium.py:265 +msgid "GRUB is at present only supported on extN" +msgstr "GRUB 預設只支援 extN" + +#: modules/medium.py:271 +msgid "syslinux is only supported on vfat" +msgstr "syslinux 只支援 vfat" + +#: modules/medium.py:287 +#: modules/medium.py:320 +msgid "Couldn't mount larch partition, %s" +msgstr "無法掛載 larch 分割區,%s。" + +#: modules/medium.py:341 +msgid "'syslinux' must be installed." +msgstr "必須安裝「syslinux」。" + +#: modules/medium.py:345 +msgid "Device has neither a /boot nor a /syslinux directory" +msgstr "裝置既沒有 /boot 也沒有 /syslinux 目錄" + +#: modules/medium.py:359 +msgid "" +"%s not found -\n" +" 'syslinux' must be installed on live system" +msgstr "" +"沒有找到 %s -\n" +" 「syslinux」必須安裝在即時系統上" + +#: modules/medium.py:375 +msgid "Your larch iso, %s, was successfully created" +msgstr "您的 larch iso,%s,已建立成功" + +#: modules/mediumpage.py:67 +msgid "Partition (disk / USB-stick)" +msgstr "分割區 (磁碟 / USB 隨身碟)" + +#: modules/mediumpage.py:69 +msgid "You can choose installation to iso (for CD/DVD) or a partition (e.g. USB-stick)" +msgstr "您可以選擇安裝到 iso (CD/DVD) 或一個分割區 (例如 USB 隨身碟)" + +#: modules/mediumpage.py:72 +msgid "Application ID:" +msgstr "應用程式 ID:" + +#: modules/mediumpage.py:74 +msgid "The text passed to mkisofs with the -A option" +msgstr "用 -A 選項將這些文字傳到 mkisofs" + +#: modules/mediumpage.py:76 +msgid "Change the application ID of the iso" +msgstr "變更此 iso 的應用程式 ID" + +#: modules/mediumpage.py:78 +msgid "Publisher:" +msgstr "發行人:" + +#: modules/mediumpage.py:80 +msgid "The text passed to mkisofs with the -publisher option" +msgstr "用 -publisher 選項將這些文字傳到 mkisofs" + +#: modules/mediumpage.py:82 +msgid "Change the publisher data of the iso" +msgstr "變更此 iso 的發行人資料" + +#: modules/mediumpage.py:84 +msgid "Partition:" +msgstr "分割區" + +#: modules/mediumpage.py:86 +msgid "The partition to which the larch system is to be installed" +msgstr "要安裝 larch 系統的分割區" + +#: modules/mediumpage.py:87 +msgid "Choose" +msgstr "選擇" + +#: modules/mediumpage.py:88 +msgid "Select the partition to receive the larch system" +msgstr "選擇要接收 larch 系統的分割區" + +#: modules/mediumpage.py:89 +msgid "Don't format" +msgstr "不要格式化" + +#: modules/mediumpage.py:90 +msgid "Copy the data to the partition without formatting first (not the normal procedure)" +msgstr "不先格式化直接複製資料到分割區 (非正常步驟)" + +#: modules/mediumpage.py:92 +msgid "Medium Detection" +msgstr "偵測媒體" + +#: modules/mediumpage.py:93 +msgid "Choose how the boot scripts determine where to look for the larch system" +msgstr "選擇開機腳本尋找 larch 系統位置的方式" + +#: modules/mediumpage.py:95 +msgid "Use the partition's UUID to find it" +msgstr "使用分割區的 UUID 來尋找它" + +#: modules/mediumpage.py:97 +msgid "Use the partition's label to find it" +msgstr "使用分割區的標籤來尋找它" + +#: modules/mediumpage.py:98 +msgid "Partition" +msgstr "分割區" + +#: modules/mediumpage.py:99 +msgid "Use the partition name (/dev/sdb1, etc.)" +msgstr "使用分割區名稱 (/dev/sdb1 等)" + +#: modules/mediumpage.py:100 +msgid "Search (for larchboot)" +msgstr "搜尋 (針對 larchboot)" + +#: modules/mediumpage.py:101 +msgid "Test all CD/DVD devices and partitions until the file larch/larchboot is found" +msgstr "測試所有 CD/DVD 裝置和分割區直到發現 larch/larchboot 檔案" + +#: modules/mediumpage.py:103 +msgid "Medium label:" +msgstr "媒體標籤:" + +#: modules/mediumpage.py:105 +msgid "The label that the partition will be given" +msgstr "給定此分割區的標籤" + +#: modules/mediumpage.py:107 +msgid "Change the label" +msgstr "變更此標籤" + +#: modules/mediumpage.py:109 +msgid "Enable session saving" +msgstr "啟用作業階段儲存" + +#: modules/mediumpage.py:110 +msgid "If checked, the medium will have the file 'larch/save'" +msgstr "如果勾選,此媒體會有「larch/save」檔案" + +#: modules/mediumpage.py:112 +msgid "Bootloader" +msgstr "開機管理程式" + +#: modules/mediumpage.py:113 +msgid "You can choose between GRUB and syslinux/isolinux as bootloader" +msgstr "您可以選擇 GRUB 或 syslinux/isolinux 作為開機管理程式" + +#: modules/mediumpage.py:115 +msgid "Use GRUB as bootloader" +msgstr "使用 GRUB 作為開機管理程式" + +#: modules/mediumpage.py:117 +msgid "Use syslinux (partition) or isolinux (CD/DVD) as bootloader" +msgstr "使用 syslinux (分割區) 或 isolinux (CD/DVD) 作為開機管理程式" + +#: modules/mediumpage.py:118 +#: modules/mediumpage.py:233 +msgid "None" +msgstr "無" + +#: modules/mediumpage.py:119 +msgid "Don't install a bootloader (you'll need to provide some means of booting)" +msgstr "不要安裝開機管理程式 (您需要提供開機的某種辦法)" + +#: modules/mediumpage.py:121 +msgid "Bootable via search" +msgstr "透過搜尋開機" + +#: modules/mediumpage.py:122 +msgid "Create the file larch/larchboot to mark the medium as a bootable larch system" +msgstr "建立檔案 larch/larchboot 來標記媒體作為可開機 larch 系統" + +#: modules/mediumpage.py:124 +msgid "Edit boot entries" +msgstr "編輯開機項目" + +#: modules/mediumpage.py:125 +msgid "Edit the file determining the boot entries" +msgstr "編輯用來決定開機項目的檔案" + +#: modules/mediumpage.py:126 +#: modules/mediumpage.py:127 +msgid "Edit grub template" +msgstr "編輯 grub 範本" + +#: modules/mediumpage.py:128 +#: modules/mediumpage.py:129 +msgid "Edit syslinux/isolinux template" +msgstr "編輯 syslinux/isolinux 範本" + +#: modules/mediumpage.py:131 +msgid "Create boot iso" +msgstr "建立開機 iso" + +#: modules/mediumpage.py:132 +msgid "Create a small boot iso for this system (for machines that can't boot from USB)" +msgstr "建立這個系統的小開機 iso (針對無法從 USB 開機的電腦)" + +#: modules/mediumpage.py:133 +msgid "Create larch medium" +msgstr "建立 larch 媒體" + +#: modules/mediumpage.py:134 +msgid "Create the larch iso or set up the chosen partition" +msgstr "建立 larch iso 或安裝選擇的分割區" + +#: modules/mediumpage.py:136 +msgid "" +"Edit cd-root\n" +"(open in file browser)" +msgstr "" +"編輯 cd-root\n" +"(用檔案瀏覽程式開啟)" + +#: modules/mediumpage.py:137 +msgid "Open a file browser on the profile's 'cd-root' folder" +msgstr "用檔案瀏覽程式開啟描述檔的「cd-root」資料夾" + +#: modules/mediumpage.py:163 +msgid "Choose Partition" +msgstr "選擇分割區" + +#: modules/mediumpage.py:165 +msgid "" +"BE CAREFUL - if you select the wrong\n" +" partition you might well destroy your system!\n" +"\n" +"Select the partition to receive the larch system:" +msgstr "" +"請小心 - 如果您選擇錯誤的分割區\n" +" 可能會摧毀您的系統!!\n" +"\n" +"選擇要接收 larch 系統的分割區:" + +#: modules/mediumpage.py:253 +msgid "Editing larch boot entries" +msgstr "編輯 larch 開機項目" + +#: modules/mediumpage.py:264 +msgid "Editing grub template" +msgstr "編輯 grub 範本" + +#: modules/mediumpage.py:276 +msgid "Editing syslinux/isolinux template" +msgstr "編輯 syslinux/isolinux 範本" + +#: modules/mediumpage.py:281 +msgid "Enter new label for the boot medium:" +msgstr "輸入開機媒體的新標籤:" + +#: modules/mediumpage.py:295 +msgid "Enter new application ID for the boot iso:" +msgstr "輸入開機 iso 的新應用程式 ID:" + +#: modules/mediumpage.py:309 +msgid "Enter new publisher for the boot iso:" +msgstr "輸入開機 iso 的新發行人:" + +#: modules/mediumpage.py:366 +msgid "No partition selected for larch" +msgstr "沒有選擇分割區給 larch" + +#: modules/mediumpage.py:389 +msgid "" +"The partition containing the larch live system\n" +"must be specifed." +msgstr "必須指定含有 larch 即時系統的分割區。" + +#: modules/projectpage.py:50 +msgid "Profile" +msgstr "描述檔" + +#: modules/projectpage.py:52 +msgid "Choose Existing Profile:" +msgstr "選擇現有的描述檔:" + +#: modules/projectpage.py:54 +msgid "New Profile:" +msgstr "新描述檔:" + +#: modules/projectpage.py:56 +msgid "Choose a profile from those already in your larch working folder" +msgstr "從已在您的 larch 工作資料夾的那些描述檔中選擇一個" + +#: modules/projectpage.py:57 +msgid "Browse for Profile" +msgstr "瀏覽描述檔" + +#: modules/projectpage.py:58 +msgid "Fetch a profile from the file-system" +msgstr "從檔案系統取得描述檔" + +#: modules/projectpage.py:59 +msgid "Rename" +msgstr "重新命名" + +#: modules/projectpage.py:60 +msgid "Rename the current profile" +msgstr "重新命名目前的描述檔" + +#: modules/projectpage.py:61 +#: modules/projectpage.py:76 +msgid "Delete" +msgstr "刪除" + +#: modules/projectpage.py:62 +msgid "Delete the current profile" +msgstr "刪除目前的描述檔" + +#: modules/projectpage.py:64 +msgid "Platform (processor architecture):" +msgstr "平台 (處理器架構):" + +#: modules/projectpage.py:66 +msgid "Which processor architecture?" +msgstr "哪一種處理器架構?" + +#: modules/projectpage.py:70 +msgid "Project" +msgstr "專案" + +#: modules/projectpage.py:71 +msgid "Choose Existing Project:" +msgstr "選擇現有的專案:" + +#: modules/projectpage.py:73 +msgid "Choose a project from those already defined" +msgstr "從已定義的那些專案中選擇一項" + +#: modules/projectpage.py:74 +msgid "New Project" +msgstr "新增專案" + +#: modules/projectpage.py:75 +msgid "Create a new project" +msgstr "建立新的專案" + +#: modules/projectpage.py:77 +msgid "Delete the current project" +msgstr "刪除目前的專案" + +#: modules/projectpage.py:81 +msgid "The root directory of the Arch installation to larchify" +msgstr "Arch 安裝到 larchify 的根目錄" + +#: modules/projectpage.py:83 +msgid "Change the root directory of the Arch installation" +msgstr "變更 Arch 安裝的根目錄" + +#: modules/projectpage.py:113 +msgid "Profile directory mismatch: '%s' vs. '%s'" +msgstr "描述檔目錄不相符:「%s」與「%s」" + +#: modules/projectpage.py:120 +msgid "Profile '%s' doesn't exist" +msgstr "描述檔「%s」不存在" + +#: modules/projectpage.py:165 +msgid "Select profile source folder and enter new name" +msgstr "選擇描述檔來源資料夾並輸入新的名稱" + +#: modules/projectpage.py:166 +msgid "New name:" +msgstr "新的名稱:" + +#: modules/projectpage.py:183 +msgid "Enter new name for current profile:" +msgstr "輸入目前描述檔的新名稱:" + +#: modules/projectpage.py:208 +msgid "Do you really want to delete profile '%s'?" +msgstr "您確定要刪除描述檔「%s」?" + +#: modules/projectpage.py:218 +msgid "Profile '%s' in use by project '%s" +msgstr "專案「%s」正在使用描述檔「%s」" + +#: modules/projectpage.py:229 +msgid "" +"WARNING: Double check your path -\n" +" If you make a mistake here it could destroy your system!\n" +"\n" +"Enter new installation path:" +msgstr "" +"警告:點擊兩下您的路徑 -\n" +" 如果您在這裡犯錯可能會摧毀您的系統!\n" +"\n" +"輸入新的安裝路徑:" + +#: modules/projectpage.py:251 +msgid "" +"Your selected installation path (%s) contains unexpected items:\n" +" %s\n" +"\n" +"Is that really ok?" +msgstr "" +"您選擇的安裝路徑 (%s) 含有不明的項目:\n" +" %s\n" +"\n" +"真的沒關係嗎?" + +#: modules/projectpage.py:266 +msgid "Enter name for new project:" +msgstr "輸入新專案的名稱:" + +#: modules/projectpage.py:274 +msgid "Project '%s' already exists." +msgstr "專案「%s」已存在。" + +#: modules/projectpage.py:282 +msgid "Can't delete the only existing project." +msgstr "不能刪除僅存的專案。" + +#: modules/projectpage.py:290 +msgid "Do you really want to delete project '%s'?" +msgstr "您確定要刪除專案「%s」?" + +#: modules/tweakpage.py:45 +msgid "Package Management" +msgstr "套件管理" + +#: modules/tweakpage.py:46 +msgid "Synchronize db" +msgstr "同步 db" + +#: modules/tweakpage.py:47 +msgid "Synchronize the pacman db on the target (pacman -Sy)" +msgstr "同步目標上的 pacman db (pacman -Sy)" + +#: modules/tweakpage.py:48 +msgid "Update / Add package [-U]" +msgstr "更新 / 加入套件 [-U]" + +#: modules/tweakpage.py:49 +msgid "Update / Add a package from a package file using pacman -U" +msgstr "使用 pacman -U 從套件檔來更新/加入套件" + +#: modules/tweakpage.py:50 +msgid "Add package(s) [-S]" +msgstr "加入套件 [-S]" + +#: modules/tweakpage.py:51 +msgid "Add one or more packages (space separated) using pacman -S" +msgstr "使用 pacman -S 加入一個或多個套件 (用空白分隔開)" + +#: modules/tweakpage.py:52 +msgid "Remove package(s) [-Rs]" +msgstr "移除套件 [-Rs]" + +#: modules/tweakpage.py:53 +msgid "Remove one or more packages (space separated) using pacman -Rs" +msgstr "使用 pacman -Rs 移除一個或多個套件 (用空白分隔開)" + +#: modules/tweakpage.py:73 +msgid "Package to add/update" +msgstr "要加入/更新的套件" + +#: modules/tweakpage.py:75 +msgid "Packages" +msgstr "套件" + +#: modules/tweakpage.py:82 +msgid "Error during package update." +msgstr "套件更新時發生錯誤。" + +#: modules/tweakpage.py:87 +msgid "" +"Enter the names of packages to install -\n" +" separated by spaces:" +msgstr "" +"輸入要安裝的套件名稱 -\n" +" 用空白分隔開:" + +#: modules/tweakpage.py:96 +msgid "Error during package installation." +msgstr "套件安裝時發生錯誤。" + +#: modules/tweakpage.py:101 +msgid "" +"Enter the names of packages to remove -\n" +" separated by spaces:" +msgstr "" +"輸入要移除的套件名稱 -\n" +" 用空白分隔開:" + +#: modules/tweakpage.py:110 +msgid "Error during package removal." +msgstr "套件移除時發生錯誤。" + +#~ msgid "Edit 'baseveto'" +#~ msgstr "編輯「baseveto」" +#~ msgid "There are no options specific to iso media." +#~ msgstr "沒有指定給 iso 媒體的選項。" + diff --git a/build_tools/l7/larch0/images/larch.png b/build_tools/l7/larch0/images/larch.png Binary files differnew file mode 100644 index 0000000..6291ed8 --- /dev/null +++ b/build_tools/l7/larch0/images/larch.png diff --git a/build_tools/l7/larch0/images/larch80.png b/build_tools/l7/larch0/images/larch80.png Binary files differnew file mode 100644 index 0000000..1da4f30 --- /dev/null +++ b/build_tools/l7/larch0/images/larch80.png diff --git a/build_tools/l7/larch0/images/larchicon.png b/build_tools/l7/larch0/images/larchicon.png Binary files differnew file mode 100644 index 0000000..8e87f5d --- /dev/null +++ b/build_tools/l7/larch0/images/larchicon.png diff --git a/build_tools/l7/larch0/profiles/default/addedpacks b/build_tools/l7/larch0/profiles/default/addedpacks new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build_tools/l7/larch0/profiles/default/addedpacks diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/addedpacks b/build_tools/l7/larch0/profiles/i686-testing-local/addedpacks new file mode 100644 index 0000000..7683591 --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/addedpacks @@ -0,0 +1,223 @@ +# These are needed to build a live CD +linhes-live +squashfs-tools +lzop + +syslinux + +# You need a kernel. +#kernel26 is now in 'base' +aufs2 + +# To eject a cd +eject + +# Useful for use as installer, etc. +#ntfsprogs +#parted + +#ddcxinfo-knoppix +#hwd + +sudo + +lsof +cdrkit +dvd+rw-tools + + +# generally useful tools which don't require X +#mtools is required by syslinux +openssh +dosfstools +alsa-lib +alsa-oss +alsa-utils +cdparanoia +cdrdao +unzip + + +# Xorg packages +xorg-server +xorg-xkb-utils +xorg-xauth +xorg-server-utils +xorg-xinit +xorg-input-drivers +xterm +xorg-fonts-100dpi +xorg-fonts-75dpi +xorg-res-utils +ttf-ms-fonts + +#xorg-video-drivers +xf86-video-amd +xf86-video-apm +xf86-video-ark +xf86-video-ati +xf86-video-chips +xf86-video-cirrus +xf86-video-dummy +xf86-video-fbdev +xf86-video-glint +xf86-video-i128 +xf86-video-i740 +#xf86-video-i810 +xf86-video-imstt +xf86-video-intel +xf86-video-mga +xf86-video-neomagic +xf86-video-nv +xf86-video-openchrome +xf86-video-radeonhd +xf86-video-rendition +xf86-video-s3 +xf86-video-s3virge +xf86-video-savage +xf86-video-siliconmotion +xf86-video-sis +xf86-video-sisusb +#xf86-video-tdfx +xf86-video-trident +xf86-video-tseng +#unichrome is busted and causes X to segfault +#xf86-video-unichrome +xf86-video-v4l +xf86-video-vesa +#vga should not be installed, vesa can handle when other drivers fail +#xf86-video-vga +#xf86-video-via +xf86-video-vmware +xf86-video-voodoo + +# X apps +#luser +#localed +unclutter + +#xkmap + +#gparted +#larchin + +#mythtv +mythtv +mythtv-contrib +mytharchive +mythbrowser +#mythcontrols +#mythflix +mythgallery +mythgame +mythmusic +#mythphone +myththemes +mythweather +mythvideo +mythsmolt +#morethemes +linhes-theme +linhes-scripts +nuvexport +lirc +lirc-utils +mysql +xmltv +esound + +#Window Manager +fluxbox +feh + +#Other +dbus +hal +fftw2 +libcdaudio +iptables +pkgconfig +taglib +portmap +ivtv-utils +dvb-firmware +dbus-python + +#MythVantage Installer deps +bc +mysql-python +expect +curl +dnsutils +avahi + +#Wireless +b43-fwcutter +#ipw2100-fw +#ipw2200-fw +#ipw3945 +#ipw3945-ucode +#ipw3945d +madwifi +madwifi-utils +ndiswrapper +ndiswrapper-utils +netcfg +tiacx +tiacx-firmware +wireless_tools +#wlan-ng26 +#wlan-ng26-utils +zd1211-firmware +hdhomerun +#---- +LinHES-config +LinHES-system +linhes-sounds +etcnet +runit +runit-scripts +media_dirs + +#--- +tweaker +ethtool +nfs-utils +netkit-telnet +ntp +syslog-ng +ppp +mingetty +setserial +acpid +fbsplash +linhes-splash +nvram-wakup +#tatir +pvr150-firmware +wol +mjpegtools +perl-net-upnp +aumix +tablet-encode +ntfs-3g +joyutils +ffmpeg-svn +myth2ipod +myt2xvid3 +mediaserv + +#---Firewire +libraw1394 +libavc1394 +# wrapper for mplayer +mplayer-wrapper + +# in-place commercial remover (for user job) +# moved to linhes-scripts +#removecommercials + +#Modules for Atheros base NICs +#atl1e + +linux-firmware diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/cache_packs b/build_tools/l7/larch0/profiles/i686-testing-local/cache_packs new file mode 100644 index 0000000..72634dd --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/cache_packs @@ -0,0 +1,59 @@ +mythdb-initial +nvidia +nvidia-utils +vdpauinfo +nvidia-96xx +nvidia-96xx-utils +#vdpinfo-96xx +lighttpd +local-website +mythweb +nfs-utils +samba +mplayer +xine-ui +lcdproc +mythappletrailers +mythstream +oss +xscreensaver +tightvnc + +#added from error log +mysql +mythnews +pycairo +pygobject +python-numeric +pygtk +fam +sqlite3 +xe +romdb +gconf +gnome-keyring +gnome-mime-data +gnome-python +gnome-python-extras +gnome-vfs +hunspell +libbonobo +libbonoboui +libgnome +libgnomecanvas +libgnomeui +libidl2 +miro +mozilla-common +nspr +nss +orbit2 +policykit +pyorbit +pyrex +startup-notification +xulrunner +mythmovies +myth2ipod +myt2xvid3 +#mediaserv diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/cd-root/isolinux/debugsub.cfg b/build_tools/l7/larch0/profiles/i686-testing-local/cd-root/isolinux/debugsub.cfg new file mode 100644 index 0000000..5ef732d --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/cd-root/isolinux/debugsub.cfg @@ -0,0 +1,38 @@ +default vesamenu.c32 +prompt 0 +#timeout 300 + +MENU BACKGROUND vbg.jpg +MENU COLOR border 31;40 #90ffff00 #00000000 std +MENU COLOR sel 31;47 #00000000 #FFFFFF15 al +MENU ROWS 4 +MENU CMDLINEROW 22 +#MENU TIMEOUTROW 23 +MENU TABMSGROW 22 + +MENU TITLE LinHES: The Linux Home Entertainment System + + +label linux-nox +MENU LABEL Boot to console (without X windowing) +kernel vmlinuz +append initrd=larch.img NoX + +label linux-c2r +MENU LABEL LinHES: copy-to-ram (also activates swap) +kernel vmlinuz +append initrd=larch.img c2r + +label linux-swap +MENU LABEL LinHES: Use swap +kernel vmlinuz +append initrd=larch.img swap + +label memtest +MENU LABEL Memory tester +kernel memtest + +label goback +MENU LABEL Back +kernel vesamenu.c32 +append menu isolinux.cfg
\ No newline at end of file diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/cd-root/isolinux/hardsub.cfg b/build_tools/l7/larch0/profiles/i686-testing-local/cd-root/isolinux/hardsub.cfg new file mode 100644 index 0000000..c041eb2 --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/cd-root/isolinux/hardsub.cfg @@ -0,0 +1,57 @@ +default vesamenu.c32 +prompt 0 +#timeout 300 + +MENU BACKGROUND vbg.jpg +MENU COLOR border 31;40 #90ffff00 #00000000 std +MENU COLOR sel 31;47 #00000000 #FFFFFF15 al +MENU ROWS 4 +MENU CMDLINEROW 22 +MENU TABMSGROW 22 + +MENU TITLE LinHES: The Linux Home Entertainment System + +label atomic +MENU LABEL LinHES on Atomic Ant! +kernel vmlinuz +append initrd=larch.img vga=792 quiet splash=silent,theme:linhes console=tty1 disablemodules=agpart,intel_agp + +#label linux-i810 +#MENU LABEL with Intel i810 driver (DRI disabled) +#kernel vmlinuz +#append initrd=larch.img i810 + +label linux-vesa +MENU LABEL Force use of vesa driver +kernel vmlinuz +append initrd=larch.img forceXvesa + +lable skipTweaker +MENU LABEL LinHES no splashscren no tweaker. +kernel vmlinuz +append initrd=larch.img no_meth + +label dragon +MENU LABEL Dragon Version 1 +kernel vmlinuz +append initrd=larch.img type=dragon vga=0x314 quiet splash=silent,theme:linhes console=tty1 + +label dragon2 +MENU LABEL Dragon Version 2 +kernel vmlinuz +append initrd=larch.img type=dragon2 vga=0x314 quiet splash=silent,theme:linhes console=tty1 + +label ausdragon +MENU LABEL Australian Dragon +kernel vmlinuz +append initrd=larch.img type=ausdragon vga=0x314 quiet splash=silent,theme:linhes console=tty1 + +label 8400 +MENU LABEL For the Nvidia 8400 chipset. +kernel vmlinuz +append initrd=larch.img vga=792 quiet splash=silent,theme:linhes console=tty1 disablemodules=agpart + +label goback +MENU LABEL Back +kernel vesamenu.c32 +append menu isolinux.cfg diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/cd-root/isolinux/isolinux.cfg b/build_tools/l7/larch0/profiles/i686-testing-local/cd-root/isolinux/isolinux.cfg new file mode 100644 index 0000000..646b173 --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/cd-root/isolinux/isolinux.cfg @@ -0,0 +1,37 @@ +default vesamenu.c32 +prompt 0 +timeout 300 + +MENU BACKGROUND vbg.jpg +MENU COLOR border 31;40 #90ffff00 #00000000 std +MENU COLOR sel 31;47 #00000000 #FFFFFF15 al +MENU ROWS 4 +MENU CMDLINEROW 22 +MENU TIMEOUTROW 23 +MENU TABMSGROW 22 + +MENU TITLE LinHES: The Linux Home Entertainment System + +label linux +MENU LABEL LinHES (default). +kernel vmlinuz +append initrd=larch.img vga=0x314 quiet splash=silent,theme:linhes console=tty1 + +label linux-nosplash +MENU LABEL LinHES without splash screen. +kernel vmlinuz +append initrd=larch.img + +label special +MENU LABEL Special Hardware +kernel vesamenu.c32 +append hardsub.cfg + +label debug +MENU LABEL Debug options +kernel vesamenu.c32 +append debugsub.cfg + +label local +menu label Boot from ^local drive +localboot 0xffff diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/cd-root/isolinux/vbg.jpg b/build_tools/l7/larch0/profiles/i686-testing-local/cd-root/isolinux/vbg.jpg Binary files differnew file mode 100644 index 0000000..07d31a6 --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/cd-root/isolinux/vbg.jpg diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/cd-root/larch/copy/actions.rc b/build_tools/l7/larch0/profiles/i686-testing-local/cd-root/larch/copy/actions.rc new file mode 100644 index 0000000..dd95b26 --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/cd-root/larch/copy/actions.rc @@ -0,0 +1,3 @@ +type=0 +orientation=1 + diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/cd-root/larch/copy/autologin b/build_tools/l7/larch0/profiles/i686-testing-local/cd-root/larch/copy/autologin new file mode 100644 index 0000000..93ca142 --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/cd-root/larch/copy/autologin @@ -0,0 +1 @@ +root
\ No newline at end of file diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/cd-root/larch/copy/bash_profile b/build_tools/l7/larch0/profiles/i686-testing-local/cd-root/larch/copy/bash_profile new file mode 100644 index 0000000..c49349b --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/cd-root/larch/copy/bash_profile @@ -0,0 +1 @@ +. $HOME/.bashrc diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/cd-root/larch/copy/larch0 b/build_tools/l7/larch0/profiles/i686-testing-local/cd-root/larch/copy/larch0 new file mode 100644 index 0000000..c80b7c2 --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/cd-root/larch/copy/larch0 @@ -0,0 +1,63 @@ +# This is a script 'sourced' from the installation script larch-tidy. +# Its purpose is to remove custom live-only stuff from a just-installed +# system. +# ${INSTALL} is the path to the installed system root directory. + +rm "${INSTALL}/root/Desktop/Install Arch Linux.desktop" + +if [ -f ${INSTALL}/etc/rc.local.orig ]; then + mv ${INSTALL}/etc/rc.local.orig ${INSTALL}/etc/rc.local +fi +if [ -f ${INSTALL}/etc/rc.local.shutdown.orig ]; then + mv ${INSTALL}/etc/rc.local.shutdown.orig ${INSTALL}/etc/rc.local.shutdown +fi + +# slim is currently started in inittab +#sed -i '/^DAEMONS=/ s|!slim|@slim|' ${INSTALL}/etc/rc.conf + +# Copy xorg.conf.i810 to target xorg.conf if necessary +if ! [ -f /etc/X11/xorg.conf ]; then + if grep i810 /proc/cmdline &>/dev/null; then + cp /etc/X11/xorg.conf.i810 ${INSTALL}/etc/X11/xorg.conf + fi +fi + +#***************************************************# +# Replace uses of larchquit in xfce panels and menu.# +#***************************************************# +### Unfortunately this isn't very simple. If anyone has a better way of +### providing different Quit actions in the live version and the version +### installed to disk from it, please let me know! +### Maybe it would be better just to provide a special live quit desktop +### icon which can be removed on installation, like the installation icon. + +defaultquit='<builtin name="Quit" cmd="Quit" icon="gnome-logout"/>' + +replacequit () +{ + for f in ${INSTALL}$1/.config/xfce4/panel/*; do + if grep "^Exec=larchquit" ${f}; then + n=$( echo ${f} | sed "s|^.*-\([0-9]\+\).*|\1|" ) + cp /.livesys/actions.rc \ + ${INSTALL}$1/.config/xfce4/panel/actions-${n}.rc + rm ${f} + + sed -i "s|=\"launcher\" id=\"${n}\"|=\"actions\" id=\"${n}\"|" \ + ${INSTALL}$1/.config/xfce4/panel/panels.xml + fi + done + + if [ -f ${INSTALL}$1/.bash_profile ]; then + sed -i "s|<app .*cmd=\"larchquit.*/>|${defaultquit}|" \ + ${INSTALL}$1/.config/xfce4/desktop/menu.xml + + cp /.livesys/xfce4-session.rc ${INSTALL}$1/.config/xfce4-session + cp /.livesys/bash_profile ${INSTALL}$1/.bash_profile + fi +} + +for hd in $( cat ${INSTALL}/etc/passwd | cut -d':' -f6 | grep '^/home/' ) \ + /root /etc/skel; do + replacequit ${hd} &>/dev/null +done +#***************************************************# diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/create_overlay.sh b/build_tools/l7/larch0/profiles/i686-testing-local/create_overlay.sh new file mode 100755 index 0000000..6a4fdee --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/create_overlay.sh @@ -0,0 +1 @@ +../../run/xpack -r overlay overlay.xpk diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/locale.gen b/build_tools/l7/larch0/profiles/i686-testing-local/locale.gen new file mode 100644 index 0000000..760ec23 --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/locale.gen @@ -0,0 +1,5 @@ +# locales for larch (/etc/locale.gen) + +en_US ISO-8859-1 +en_US.UTF-8 UTF-8 + diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/mkinitcpio.conf b/build_tools/l7/larch0/profiles/i686-testing-local/mkinitcpio.conf new file mode 100644 index 0000000..7279f45 --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/mkinitcpio.conf @@ -0,0 +1,54 @@ +# vim:set ft=sh +# MODULES +# The following modules are loaded before any boot hooks are +# run. Advanced users may wish to specify all system modules +# in this array. For instance: +# MODULES="piix ide_disk reiserfs" +MODULES="" + +# BINARIES +# This setting includes, into the CPIO image, and additional +# binaries a given user may wish. This is run first, so may +# be used to override the actual binaries used in a given hook. +# (Existing files are NOT overwritten is already added) +# BINARIES are dependancy parsed, so you may safely ignore libraries +#BINARIES="" + +# FILES +# This setting is similar to BINARIES above, however, files are added +# as-is and are not parsed in anyway. This is useful for config files. +# Some users may wish to include modprobe.conf for custom module options, +# like so: +# FILES="/etc/modprobe.conf" +FILES="" + +# HOOKS +# This is the most important setting in this file. The HOOKS control the +# modules and scripts added to the image, and what happens at boot time. +# Order is important, and it is recommended that you do not change the +# order in which HOOKS are added. Run 'mkinitcpio -H <hook name>' for +# help on a given hook. +# 'base' is _required_ unless you know precisely what you are doing. +# 'udev' is _required_ in order to automatically load modules +# 'modload' may be used in place of 'udev', but is not recommended +# 'filesystems' is _required_ unless you specify your fs modules in MODULES +# Examples: +# This setup specifies all modules in the MODULES setting above. +# No raid, lvm, or encrypted root is needed. +# HOOKS="base" +# +# This setup will autodetect all modules for your system and should +# work as a sane default +# HOOKS="base udev autodetect ide scsi sata filesystems" +# +# This setup will generate a 'full' image which supports most systems. +# No autodetection is done. +# HOOKS="base udev ide scsi sata usb filesystems" +# +# This setup assembles an ide raid array with an encrypted root FS. +# Note: See 'mkinitcpio -H raid' for more information on raid devices. +# HOOKS="base udev ide filesystems raid encrypt" +# +# This setup loads an LVM volume group on a usb device. +# HOOKS="base udev usb filesystems lvm" +HOOKS="base udev pata scsi sata usb larch1 larch2_aufs larch3 fbsplash" diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/overlay/home/mythtv/.fluxbox/apps b/build_tools/l7/larch0/profiles/i686-testing-local/overlay/home/mythtv/.fluxbox/apps new file mode 100644 index 0000000..5a2b8d6 --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/overlay/home/mythtv/.fluxbox/apps @@ -0,0 +1,2 @@ +[startup] {feh --bg-scale ~/.fluxbox/wallpaper.png} +[startup] {sudo /usr/MythVantage/bin/mythvantage} diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/overlay/home/mythtv/.xinitrc b/build_tools/l7/larch0/profiles/i686-testing-local/overlay/home/mythtv/.xinitrc new file mode 100755 index 0000000..d988c98 --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/overlay/home/mythtv/.xinitrc @@ -0,0 +1,19 @@ +#!/bin/sh +. /etc/profile +# +# ~/.xinitrc +# +# Executed by startx (run your window manager from here) +# + +# exec gnome-session +# exec startkde +# exec startxfce4 +# exec icewm +# exec openbox +# exec blackbox +# exec fluxbox +# exec ratpoison +# exec dwm +# ... or any other WM of your choosing ... +exec fluxbox diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/pacman.conf b/build_tools/l7/larch0/profiles/i686-testing-local/pacman.conf new file mode 100755 index 0000000..617c4d1 --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/pacman.conf @@ -0,0 +1,62 @@ +# +# /etc/pacman.conf +# from pacman.conf MV +# NOTE: If you find a mirror that is geographically close to you, please +# move it to the top of the server list, so pacman will choose it +# first. +# +# To re-sort your mirror lists by ping/traceroute results, use the +# /usr/bin/sortmirrors script. It requires the "netselect" package. +# + +# See the pacman manpage for option directives + +# +# GENERAL OPTIONS +# +[options] +LogFile = /var/log/pacman.log +NoUpgrade = etc/passwd etc/group etc/shadow etc/sudoers +NoUpgrade = etc/fstab etc/raidtab etc/ld.so.conf +NoUpgrade = etc/rc.conf etc/rc.local +NoUpgrade = etc/modprobe.conf etc/modules.conf +NoUpgrade = etc/lilo.conf boot/grub/menu.lst +NoUpgrade = data/srv/hobbit/etc/bb-hosts +NoUpgrade = etc/func/minion.conf + +HoldPkg = pacman glibc +CacheDir = /data/var/cache/pacman/pkg +#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u + +# +# REPOSITORIES +# - can be defined here or included from another file +# - pacman will search repositories in the order defined here. +# - local/custom mirrors can be added here or in separate files +# +[core-testing] +Server = file:///data/pkg_repo/i686/core-testing + +[extra-testing] +Server = file:///data/pkg_repo/i686/extra-testing + + + +########################ARCH DEFAULTS############# +#[core] +# Add your preferred servers here, they will be used first +#Include = /etc/pacman.d/mirrorlist + +#[extra] +# Add your preferred servers here, they will be used first +#Include = /etc/pacman.d/mirrorlist + +#[community] +# Add your preferred servers here, they will be used first +#Include = /etc/pacman.d/mirrorlist + +# Unstable is disabled by default. To enable, uncomment the following +# two lines. You can add preferred servers immediately after the header, +# and they will be used before the default mirrors. +#[unstable] +#Include = /etc/pacman.d/mirrorlist diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/post-process.sh b/build_tools/l7/larch0/profiles/i686-testing-local/post-process.sh new file mode 100755 index 0000000..883d9ad --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/post-process.sh @@ -0,0 +1,17 @@ +#!/bin/bash +echo $@ +INSTDIR=$1 +PROFILE=$2 + +#everything below this point is specific to MythVantage +cp -rp $PROFILE/post_process $INSTDIR/.post_process +chroot $INSTDIR .post_process/modify_chroot.sh +rm -rf $INSTDIR/.post_process + +#find the size of the install. +#This is used to calculate progress on the install +tsize=`du -sm $INSTDIR/ | cut -f1` +echo "TOTALSIZE=$tsize" > $INSTDIR/root/.install_size +upsize=`du -sm --exclude data $INSTDIR/ |cut -f1` +echo "UPGRADESIZE=$upsize" >> $INSTDIR/root/.install_size + diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/post_process/home/mythtv/.bash_profile b/build_tools/l7/larch0/profiles/i686-testing-local/post_process/home/mythtv/.bash_profile new file mode 100644 index 0000000..c49349b --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/post_process/home/mythtv/.bash_profile @@ -0,0 +1 @@ +. $HOME/.bashrc diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/post_process/home/mythtv/.bashrc b/build_tools/l7/larch0/profiles/i686-testing-local/post_process/home/mythtv/.bashrc new file mode 100644 index 0000000..fcabce0 --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/post_process/home/mythtv/.bashrc @@ -0,0 +1,3 @@ +alias ls='ls --color=auto' +PS1='[\u@\h \W]\$ ' + diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/post_process/home/mythtv/.fluxbox/apps b/build_tools/l7/larch0/profiles/i686-testing-local/post_process/home/mythtv/.fluxbox/apps new file mode 100644 index 0000000..994daf7 --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/post_process/home/mythtv/.fluxbox/apps @@ -0,0 +1,4 @@ +#Uncomment below if you are using firewire +#[startup] {/usr/bin/plugctl -n 0 "oPCR[0].n_p2pconnections=1"} +[startup] {feh --bg-scale ~/.fluxbox/wallpaper.png} +[startup] {/usr/LH/bin/LinHES-run} diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/post_process/home/mythtv/.fluxbox/init b/build_tools/l7/larch0/profiles/i686-testing-local/post_process/home/mythtv/.fluxbox/init new file mode 100644 index 0000000..9791a7f --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/post_process/home/mythtv/.fluxbox/init @@ -0,0 +1,35 @@ +session.screen0.slit.placement: BottomRight +session.screen0.slit.direction: Vertical +session.screen0.slit.onTop: False +session.screen0.slit.autoHide: True +session.screen0.tab.placement: Top +session.screen0.toolbar.onTop: False +session.screen0.toolbar.visible: False +session.screen0.toolbar.autoHide: False +session.screen0.toolbar.placement: BottomCenter +session.screen0.toolbar.widthPercent: 66 +session.screen0.workspaceNames: one,two,three,four +session.screen0.strftimeFormat: %k:%M +session.screen0.focusNewWindows: True +session.screen0.focusModel: ClickToFocus +session.screen0.fullMaximization: False +session.screen0.edgeSnapThreshold: 0 +session.screen0.rowPlacementDirection: LeftToRight +session.screen0.workspaces: 4 +session.screen0.focusLastWindow: True +session.screen0.colPlacementDirection: TopToBottom +session.screen0.windowPlacement: RowSmartPlacement +session.screen0.tab.width: 64 +session.screen0.tab.height: 16 +session.screen0.showwindowposition: true +session.opaqueMove: False +session.autoRaiseDelay: 250 +session.menuFile: ~/.fluxbox/menu +session.cacheLife: 5 +session.styleFile: /usr/share/fluxbox/styles/Artwiz +session.keyFile: ~/.fluxbox/keys +session.colorsPerChannel: 4 +session.doubleClickInterval: 250 +session.cacheMax: 200 +session.imageDither: True +session.configVersion: 1 diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/post_process/home/mythtv/.fluxbox/menu b/build_tools/l7/larch0/profiles/i686-testing-local/post_process/home/mythtv/.fluxbox/menu new file mode 100644 index 0000000..858090e --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/post_process/home/mythtv/.fluxbox/menu @@ -0,0 +1,81 @@ +# Generated by fluxbox-generate_menu +# +# If you read this it means you want to edit this file manually, so here +# are some useful tips: +# +# - You can add your own menu-entries to ~/.fluxbox/usermenu +# +# - If you miss apps please let me know and I will add them for the next +# release. +# +# - The -r option prevents removing of empty menu entries and lines which +# makes things much more readable. +# +# - To prevent any other app from overwriting your menu +# you can change the menu name in .fluxbox/init to: +# session.menuFile: /home/mythtv/.fluxbox/my-menu +[begin] (Fluxbox) +[encoding] {UTF-8} + [exec] (xterm) {xterm} + [exec] () {} execname is NULL; cannot lookup + [exec] (Run) {fbrun } +[submenu] (Terminals) + [exec] (xterm) {xterm} +[end] +[submenu] (Editors) + [exec] (xedit) {xedit} + [exec] (nano) {xterm -e nano} + [exec] (vi) {xterm -e vi} +[end] +[submenu] (Multimedia) +[submenu] (Audio) + [exec] (alsamixer) {xterm -e alsamixer} +[end] +[submenu] (Video) + [exec] (gmplayer) {gmplayer} +[end] +[submenu] (X-utils) + [exec] (xfontsel) {xfontsel} + [exec] (xman) {xman} + [exec] (xload) {xload} + [exec] (xbiff) {xbiff} + [exec] (xclock) {xclock} + [exec] (xmag) {xmag} + [exec] (Reload .Xdefaults) {xrdb -load /home/mythtv/.Xdefaults} +[end] +[end] +[submenu] (Office) + [exec] (xclock) {xclock} + [exec] (xcalc) {xcalc} +[end] +[submenu] (Games) + [exec] (xeyes) {xeyes} +[end] +[submenu] (System Tools) + [exec] (top) {xterm -e top} +[end] +[submenu] (fluxbox menu) + [config] (Configure) +[submenu] (System Styles) {Choose a style...} + [stylesdir] (/usr/share/fluxbox/styles) +[end] +[submenu] (User Styles) {Choose a style...} + [stylesdir] (~/.fluxbox/styles) +[end] + [workspaces] (Workspace List) +[submenu] (Tools) + [exec] (Window name) {xprop WM_CLASS|cut -d \" -f 2|xmessage -file - -center} + [exec] (Screenshot - JPG) {import screenshot.jpg && display -resize 50% screenshot.jpg} + [exec] (Screenshot - PNG) {import screenshot.png && display -resize 50% screenshot.png} + [exec] (Run) {fbrun } + [exec] (Regen Menu) {/usr/bin/fluxbox-generate_menu } +[end] + [commanddialog] (Fluxbox Command) + [reconfig] (Reload config) + [restart] (Restart) + [exec] (About) {(fluxbox -v; fluxbox -info | sed 1d) 2> /dev/null | xmessage -file - -center} + [separator] + [exit] (Exit) +[end] +[endencoding] +[end] diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/post_process/home/mythtv/.fluxbox/menuconfig b/build_tools/l7/larch0/profiles/i686-testing-local/post_process/home/mythtv/.fluxbox/menuconfig new file mode 100644 index 0000000..ef5b398 --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/post_process/home/mythtv/.fluxbox/menuconfig @@ -0,0 +1,65 @@ +# This file is read by fluxbox-generate_menu. If you don't like a +# default you can change it here. Don't forget to remove the # in front +# of the line. + +# Your favourite terminal. Put the command in quotes if you want to use +# options. Put a backslash in before odd chars +# MY_TERM='Eterm --tint \#123456' +# MY_TERM='aterm -tint $(random_color)' + +# Your favourite browser. You can also specify options. +# MY_BROWSER=mozilla + +# Name of the outputfile +# MENUFILENAME=/home/mythtv/.fluxbox/menu + +# MENUTITLE=`fluxbox -version|cut -d " " -f-2` + +# standard url for console-browsers +# HOMEPAGE=fluxbox.org + +# location with your own menu-entries +# USERMENU=~/.fluxbox/usermenu + +# Put the launcher you would like to use here +# LAUNCHER=fbrun +# LAUNCHER=fbgm + +# Options for fbrun +# FBRUNOPTIONS='-font 10x20 -fg grey -bg black -title run' + +# --- PREFIX'es +# These are prefixes; So if fluxbox is installed in /usr/bin/fluxbox +# your prefix is: /usr + +# fluxbox-generate already looks in /usr/X11R6, /usr, /usr/local and /opt so +# there should be no need to specify them. +# +# PREFIX=/usr +# GNOME_PREFIX=/opt/gnome +# KDE_PREFIX=/opt/kde + + +# Sepparate the list of background-dirs with semicolumns ':' +# BACKGROUND_DIRS="/home/mythtv/.fluxbox/backgrounds/:/usr/share/fluxbox/backgrounds/:/usr/share/wallpapers" + + +# --- Boolean variables. +# Setting a variable to no'' won't help. Comment them out if you don't +# want them. Setting are overruled by the command-line options. + +# Include all backgrounds in your backgrounds-directory +# BACKGROUNDMENUITEM=yes + +# Include kde-menus +# KDEMENU=yes + +# Include gnome-menus +# GNOMEMENU=yes + +# enable sudo commands +# DOSUDO=yes + +# Don't cleanup the menu +# REMOVE=no + diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/post_process/home/mythtv/.fluxbox/wallpaper.png b/build_tools/l7/larch0/profiles/i686-testing-local/post_process/home/mythtv/.fluxbox/wallpaper.png Binary files differnew file mode 100644 index 0000000..83da80c --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/post_process/home/mythtv/.fluxbox/wallpaper.png diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/post_process/home/mythtv/.xinitrc b/build_tools/l7/larch0/profiles/i686-testing-local/post_process/home/mythtv/.xinitrc new file mode 100755 index 0000000..911e76e --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/post_process/home/mythtv/.xinitrc @@ -0,0 +1,18 @@ +#!/bin/sh + +# +# ~/.xinitrc +# +# Executed by startx (run your window manager from here) +# + +# exec gnome-session +# exec startkde +# exec startxfce4 +# exec icewm +# exec openbox +# exec blackbox +exec fluxbox +# exec ratpoison +# exec dwm +# ... or any other WM of your choosing ... diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/post_process/home/mythtv/.xsession b/build_tools/l7/larch0/profiles/i686-testing-local/post_process/home/mythtv/.xsession new file mode 100755 index 0000000..a16dc0b --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/post_process/home/mythtv/.xsession @@ -0,0 +1,10 @@ +#!/bin/sh + +# +# ~/.xsession +# +# Executed by xdm/gdm/kdm at login +# + +/bin/bash --login -i ~/.xinitrc + diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/post_process/hosts.allow b/build_tools/l7/larch0/profiles/i686-testing-local/post_process/hosts.allow new file mode 100644 index 0000000..f6cf005 --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/post_process/hosts.allow @@ -0,0 +1,8 @@ +# +# /etc/hosts.allow +# +ALL: 192.168. +ALL: 10. +ALL: 127.0.0.1 +ALL: 172.16. +# End of file diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/post_process/hosts.deny b/build_tools/l7/larch0/profiles/i686-testing-local/post_process/hosts.deny new file mode 100755 index 0000000..ca30ab4 --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/post_process/hosts.deny @@ -0,0 +1,6 @@ +# +# /etc/hosts.deny +# +ALL + +# End of file diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/post_process/menu.lst b/build_tools/l7/larch0/profiles/i686-testing-local/post_process/menu.lst new file mode 100755 index 0000000..8a8e3b2 --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/post_process/menu.lst @@ -0,0 +1,60 @@ +# Config file for GRUB - The GNU GRand Unified Bootloader +# /boot/grub/menu.lst + +# DEVICE NAME CONVERSIONS +# +# Linux Grub +# ------------------------- +# /dev/fd0 (fd0) +# /dev/hda (hd0) +# /dev/hdb2 (hd1,1) +# /dev/hda3 (hd0,2) +# + +# FRAMEBUFFER RESOLUTION SETTINGS +# +-------------------------------------------------+ +# | 640x480 800x600 1024x768 1280x1024 +# ----+-------------------------------------------- +# 256 | 0x301=769 0x303=771 0x305=773 0x307=775 +# 32K | 0x310=784 0x313=787 0x316=790 0x319=793 +# 64K | 0x311=785 0x314=788 0x317=791 0x31A=794 +# 16M | 0x312=786 0x315=789 0x318=792 0x31B=795 +# +-------------------------------------------------+ + +# general configuration: +timeout 5 +default 0 +#color light-blue/black light-cyan/blue + +# boot sections follow +# each is implicitly numbered from 0 in the order of appearance below +# +# TIP: If you want a 1024x768 framebuffer, add "vga=773" to your kernel line. +# +#-* +hiddenmenu + +# (0) normal +title LinHes +root (hd0,0) +kernel /boot/vmlinuz26 root=/dev/hda1 ro init=/sbin/runit console=tty1 +initrd /boot/kernel26.img + +# (1) bootsplash +title LinHes-splashy +root (hd0,0) +kernel /boot/vmlinuz26 root=/dev/hda1 ro init=/sbin/runit quiet vga=0x314 splash=silent,theme:linhes console=tty1 +initrd /boot/kernel26.img + +# (2) noautologin +title LinHES-nologin +root (hd0,0) +kernel /boot/vmlinuz26 root=/dev/hda1 ro init=/sbin/runit quiet vga=0x314 splash=silent,theme:linhes console=tty1 nox +initrd /boot/kernel26.img + + +# (3) normal +title LinHes-init +root (hd0,0) +kernel /boot/vmlinuz26 root=/dev/hda1 ro console=tty1 +initrd /boot/kernel26.img diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/post_process/modify_chroot.sh b/build_tools/l7/larch0/profiles/i686-testing-local/post_process/modify_chroot.sh new file mode 100755 index 0000000..6caf191 --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/post_process/modify_chroot.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +useradd -m -s /bin/bash mythtv -G audio,video,optical,storage,users +cp -rvpf /.post_process/home/mythtv /home/ +cp -rvpf /.post_process/home/mythtv/.fluxbox /root +chown -R mythtv.mythtv /home/mythtv/ +chown -R mythtv.mythtv /myth + +cp -f /.post_process/hosts.allow /etc/hosts.allow +cp -f /.post_process/rc.conf /etc/rc.conf +#cp -f /.post_process/rc.shutdown /etc/rc.shutdown +cp -f /.post_process/menu.lst /boot/grub/menu.lst + +cp -f /etc/skel/.bash* /root/ +rm -f /etc/ssh/ssh_host*key* diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/post_process/rc.conf b/build_tools/l7/larch0/profiles/i686-testing-local/post_process/rc.conf new file mode 100755 index 0000000..9c17944 --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/post_process/rc.conf @@ -0,0 +1,112 @@ +# +# /etc/rc.conf - Main Configuration for Arch Linux +# + +# +# ----------------------------------------------------------------------- +# LOCALIZATION +# ----------------------------------------------------------------------- +# +# LOCALE: available languages can be listed with the 'locale -a' command +# HARDWARECLOCK: set to "UTC" or "localtime" +# TIMEZONE: timezones are found in /usr/share/zoneinfo +# KEYMAP: keymaps are found in /usr/share/kbd/keymaps +# CONSOLEFONT: found in /usr/share/kbd/consolefonts (only needed for non-US) +# CONSOLEMAP: found in /usr/share/kbd/consoletrans +# USECOLOR: use ANSI color sequences in startup messages +# +LOCALE="en_US.utf8" +HARDWARECLOCK="UTC" +TIMEZONE="US/Central" +KEYMAP="us" +CONSOLEFONT= +CONSOLEMAP= +USECOLOR="yes" + +# +# ----------------------------------------------------------------------- +# HARDWARE +# ----------------------------------------------------------------------- +# +# Scan hardware and load required modules at bootup +MOD_AUTOLOAD="yes" +if [ -f /etc/systemconfig ] +then + . /etc/systemconfig +fi + +if [ x$Audiotype = xOSS -a ! -f /tmp/.alsatest ] +then + ALSABLACKLIST="!soundcore" +else + if [ x$Audiotype = xOSS ] + then + ALSABLACKLIST="!soundcore" + else + ALSABLACKLIST="" + fi +fi + +# Module Blacklist - modules in this list will never be loaded by udev +MOD_BLACKLIST_=($ALSABLACKLIST !snd-pcsp ) +# +# Modules to load at boot-up (in this order) +# - prefix a module with a ! to blacklist it +# +MODULES=($MOD_BLACKLIST_) +# Scan for LVM volume groups at startup, required if you use LVM +USELVM="no" + +# +# ----------------------------------------------------------------------- +# NETWORKING +# ----------------------------------------------------------------------- +# +HOSTNAME=`cat /etc/hostname` + +#The following is only used on the install. After the first boot everything is set from /etc/net. + + +# +# Use 'ifconfig -a' or 'ls /sys/class/net/' to see all available +# interfaces. +# +# Interfaces to start at boot-up (in this order) +# Declare each interface then list in INTERFACES +# - prefix an entry in INTERFACES with a ! to disable it +# - no hyphens in your interface names - Bash doesn't like it +# +# Note: to use DHCP, set your interface to be "dhcp" (eth0="dhcp") +# +lo="lo 127.0.0.1" +#eth0="dhcp" +INTERFACES=(lo ) +# +# Routes to start at boot-up (in this order) +# Declare each route then list in ROUTES +# - prefix an entry in ROUTES with a ! to disable it +# +gateway="default gw 192.168.0.1" +ROUTES=(!gateway) +# +# Enable these network profiles at boot-up. These are only useful +# if you happen to need multiple network configurations (ie, laptop users) +# - set to 'menu' to present a menu during boot-up (dialog package required) +# - prefix an entry with a ! to disable it +# +# Network profiles are found in /etc/network-profiles +# +#NET_PROFILES=(main) + +# +# ----------------------------------------------------------------------- +# DAEMONS +# ----------------------------------------------------------------------- +# +# Daemons to start at boot-up (in this order) +# - prefix a daemon with a ! to disable it +# - prefix a daemon with a @ to start it up in the background +# +#DAEMONS=(syslog-ng network netfs crond) +DAEMONS=(fbsplash !syslog-ng !hotplug !pcmcia network !mysqld !dbus !avahi-daemon) +# End of file diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/post_process/rc.shutdown b/build_tools/l7/larch0/profiles/i686-testing-local/post_process/rc.shutdown new file mode 100755 index 0000000..1a8cdbe --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/post_process/rc.shutdown @@ -0,0 +1,104 @@ +#!/bin/bash +# +# /etc/rc.shutdown +# + +. /etc/rc.conf +. /etc/rc.d/functions + +# avoid staircase effect +/bin/stty onlcr + +echo " " +printhl "Initiating Shutdown..." +echo " " + +if [ -x /etc/rc.local.shutdown ]; then + /etc/rc.local.shutdown +fi + +if [ "$PREVLEVEL" = "3" -o "$PREVLEVEL" = "5" ]; then + # Shutdown daemons + let i=${#DAEMONS[@]} + while [[ i -ge 0 ]]; do + if [[ `echo ${DAEMONS[$i]} | grep '^[^\!]' | wc -l` -eq 1 ]]; then + /etc/rc.d/${DAEMONS[$i]#@} stop + fi + let i=i-1 + done + # find any leftover daemons and shut them down + if [ -d /var/run/daemons ]; then + for daemon in `ls /var/run/daemons`; do + /etc/rc.d/$daemon stop + done + fi +fi + +# Terminate all processes +stat_busy "Sending SIGTERM To Processes" +/sbin/killall5 -15 &> /dev/null +/bin/sleep 5 +stat_done + +stat_busy "Sending SIGKILL To Processes" +/sbin/killall5 -9 &> /dev/null +/bin/sleep 1 +stat_done + +stat_busy "Saving Random Seed" +/bin/dd if=/dev/urandom of=/var/run/random-seed count=1 bs=512 2> /dev/null +stat_done + +stat_busy "Saving System Clock" +if [ "$HARDWARECLOCK" = "UTC" ]; then + /sbin/hwclock --directisa --utc --systohc +else + /sbin/hwclock --directisa --localtime --systohc +fi +stat_done + +# removing psmouse module to fix some reboot issues on newer laptops +modprobe -r psmouse >/dev/null 2>&1 + +# Write to wtmp file before unmounting +/sbin/halt -w + +stat_busy "Deactivating Swap" +/sbin/swapoff -a +stat_done + +stat_busy "Unmounting Filesystems" +/bin/umount -a +stat_done + +if [ "$USELVM" = "yes" -o "$USELVM" = "YES" ]; then + if [ -d /etc/lvm -a -x /sbin/lvm ]; then + /bin/mount -n -t sysfs none /sys 2>/dev/null + if [ -d /sys/block ]; then + stat_busy "Deactivating LVM2 groups" + /sbin/lvm vgchange --ignorelockingfailure -a n + stat_done + umount /sys + fi + fi +fi + +stat_busy "Remounting Root Filesystem Read-only" +/bin/mount -n -o remount,ro / +stat_done +exit 0 +# Power off or reboot +if [ "$RUNLEVEL" = "0" ]; then + printsep + printhl "${C_H2}POWER OFF" + /sbin/poweroff -d -f -h -i +else + printsep + printhl "${C_H2}REBOOTING" + # adding kexec support + [ -x /usr/sbin/kexec ] && /usr/sbin/kexec -e > /dev/null 2>&1 + /sbin/reboot -d -f -i +fi + +# End of file +# vim: set ts=2 noet: diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/pre-process.sh b/build_tools/l7/larch0/profiles/i686-testing-local/pre-process.sh new file mode 100755 index 0000000..5bc1f9c --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/pre-process.sh @@ -0,0 +1,8 @@ +#!/bin/sh +rm -f overlay.xpk +if [ -d overlay/home/mythtv ] +then + chown -R 1000 overlay/home/mythtv +fi +./create_overlay.sh + diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/rcconfx b/build_tools/l7/larch0/profiles/i686-testing-local/rcconfx new file mode 100644 index 0000000..fd0d8d3 --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/rcconfx @@ -0,0 +1,20 @@ +# +# patch file for /etc/rc.conf +# + +LOCALE="en_US.utf8" +HARDWARECLOCK="UTC" +TIMEZONE="UTC" +KEYMAP="us" + +#MODULES=(floppy) +MODULES=(!ati_remote) + +HOSTNAME="larch5" + +USELVM="yes" + +#eth0="dhcp" + +DAEMONS=(syslog-ng network mysqld dbus hal avahi-daemon !slim sshd) +SPLASH="splashy" diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/X11/xinit/startx.custom b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/X11/xinit/startx.custom new file mode 100644 index 0000000..8e3ec5e --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/X11/xinit/startx.custom @@ -0,0 +1,22 @@ +if grep -v nox /proc/cmdline &>/dev/null && \ + [ -z "$DISPLAY" ] && echo $(tty) | grep /vc/1 &>/dev/null; then + if grep i810 /proc/cmdline &>/dev/null; then + startx -- -config xorg.conf.i810 + else + startx + fi + + # Maybe there should be some code here to handle a failed startx? + + # The 'return' value is at /tmp/xlogout + # If there is nothing there, switch user to 'newuser' + # If there is also nothing there, login as root + # - if already root, fall through to terminal + + if [ -f /tmp/xlogout ] || [ -f /tmp/newuser ]; then + logout + elif [ ${UID} -ne 0 ]; then + echo "root" >/tmp/newuser + logout + fi +fi diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/X11/xinit/xinitrc.custom b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/X11/xinit/xinitrc.custom new file mode 100644 index 0000000..5f04171 --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/X11/xinit/xinitrc.custom @@ -0,0 +1,4 @@ +# Set the keymap +xkmap-set + +exec fluxbox diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/X11/xorg.conf b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/X11/xorg.conf new file mode 100644 index 0000000..6d11b2e --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/X11/xorg.conf @@ -0,0 +1,49 @@ +Section "ServerLayout" + Identifier "X.org Configured" + Screen 0 "Screen0" 0 0 +EndSection + +Section "Device" + Identifier "Card0" + Driver "vesa" +EndSection + +Section "Monitor" + Identifier "Monitor0" + HorizSync 30.0 - 65.0 + VertRefresh 50.0 - 75.0 +EndSection + +Section "Screen" + Identifier "Screen0" + Device "Card0" + Monitor "Monitor0" + DefaultDepth 16 + SubSection "Display" + Viewport 0 0 + Depth 1 + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 4 + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 8 + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 15 + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 16 + Modes "1024x768" "800x600" + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 24 + EndSubSection +EndSection + + diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/X11/xorg.conf.i810 b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/X11/xorg.conf.i810 new file mode 100644 index 0000000..9615569 --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/X11/xorg.conf.i810 @@ -0,0 +1,59 @@ +Section "ServerLayout" + Identifier "X.org Configured" + Screen 0 "Screen0" 0 0 +EndSection + +Section "Device" + ### Available Driver options are:- + ### Values: <i>: integer, <f>: float, <bool>: "True"/"False", + ### <string>: "String", <freq>: "<f> Hz/kHz/MHz" + ### [arg]: arg optional + #Option "NoAccel" # [<bool>] + #Option "SWcursor" # [<bool>] + #Option "ColorKey" # <i> + #Option "CacheLines" # <i> + #Option "Dac6Bit" # [<bool>] + #Option "DRI" # [<bool>] + #Option "NoDDC" # [<bool>] + #Option "ShowCache" # [<bool>] + #Option "XvMCSurfaces" # <i> + #Option "PageFlip" # [<bool>] + Option "DRI" "False" + #Option "AccelMethod" "exa" + #Option "MigrationHeuristic" "greedy" + #Option "ExaNoComposite" "False" + Identifier "Card0" + Driver "intel" +EndSection + +Section "Screen" + Identifier "Screen0" + Device "Card0" + Monitor "Monitor0" + SubSection "Display" + Viewport 0 0 + Depth 1 + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 4 + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 8 + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 15 + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 16 + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 24 + EndSubSection +EndSection + + diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/X11/xorg.conf.i810.2 b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/X11/xorg.conf.i810.2 new file mode 100644 index 0000000..a295b38 --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/X11/xorg.conf.i810.2 @@ -0,0 +1,67 @@ +Section "ServerLayout" + Identifier "X.org Configured" + Screen 0 "Screen0" 0 0 +EndSection + +Section "Device" + ### Available Driver options are:- + ### Values: <i>: integer, <f>: float, <bool>: "True"/"False", + ### <string>: "String", <freq>: "<f> Hz/kHz/MHz" + ### [arg]: arg optional + #Option "NoAccel" # [<bool>] + #Option "SWcursor" # [<bool>] + #Option "ColorKey" # <i> + #Option "CacheLines" # <i> + #Option "Dac6Bit" # [<bool>] + #Option "DRI" # [<bool>] + #Option "NoDDC" # [<bool>] + #Option "ShowCache" # [<bool>] + #Option "XvMCSurfaces" # <i> + #Option "PageFlip" # [<bool>] + Option "DRI" "False" + #Option "AccelMethod" "exa" + #Option "MigrationHeuristic" "greedy" + #Option "ExaNoComposite" "False" + Identifier "Card0" + Driver "intel" +EndSection + +Section "Monitor" + Identifier "Monitor0" + HorizSync 30.0 - 65.0 + VertRefresh 50.0 - 75.0 +EndSection + +Section "Screen" + Identifier "Screen0" + Device "Card0" + Monitor "Monitor0" + DefaultDepth 16 + SubSection "Display" + Viewport 0 0 + Depth 1 + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 4 + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 8 + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 15 + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 16 + Modes "1024x768" "800x600" + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 24 + EndSubSection +EndSection + + diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/X11/xorg.conf.vesa b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/X11/xorg.conf.vesa new file mode 100644 index 0000000..6d11b2e --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/X11/xorg.conf.vesa @@ -0,0 +1,49 @@ +Section "ServerLayout" + Identifier "X.org Configured" + Screen 0 "Screen0" 0 0 +EndSection + +Section "Device" + Identifier "Card0" + Driver "vesa" +EndSection + +Section "Monitor" + Identifier "Monitor0" + HorizSync 30.0 - 65.0 + VertRefresh 50.0 - 75.0 +EndSection + +Section "Screen" + Identifier "Screen0" + Device "Card0" + Monitor "Monitor0" + DefaultDepth 16 + SubSection "Display" + Viewport 0 0 + Depth 1 + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 4 + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 8 + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 15 + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 16 + Modes "1024x768" "800x600" + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 24 + EndSubSection +EndSection + + diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/conf.d/dhcpcd b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/conf.d/dhcpcd new file mode 100644 index 0000000..ab53c30 --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/conf.d/dhcpcd @@ -0,0 +1,6 @@ +# +# Arguments to be passed to the DHCP client daemon +# + +DHCPCD_ARGS="-t 10 -h $HOSTNAME" + diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/conf.d/fbsplash.bootsteps b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/conf.d/fbsplash.bootsteps new file mode 100644 index 0000000..64bb6b7 --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/conf.d/fbsplash.bootsteps @@ -0,0 +1 @@ +30 diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/conf.d/fbsplash.conf b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/conf.d/fbsplash.conf new file mode 100644 index 0000000..ddd88f8 --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/conf.d/fbsplash.conf @@ -0,0 +1,8 @@ +# +# fbsplash.conf +# + +THEMES="linhes" +SPLASH_TTYS="1 2 3 4 5 6" + +#EOF diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/conf.d/fbsplash.shutdownsteps b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/conf.d/fbsplash.shutdownsteps new file mode 100644 index 0000000..7f8f011 --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/conf.d/fbsplash.shutdownsteps @@ -0,0 +1 @@ +7 diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/hosts.allow b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/hosts.allow new file mode 100644 index 0000000..19bc4d8 --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/hosts.allow @@ -0,0 +1,13 @@ +# +# /etc/hosts.allow +# + +ALL: 127.0.0.1 + +# To allow ssh in from anywhere +sshd: ALL + +# To allow ssh in from local net (example) +#sshd: 192.168.178.0/255.255.255.0 + +# End of file diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/inittab b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/inittab new file mode 100644 index 0000000..39003ed --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/inittab @@ -0,0 +1,43 @@ +# +# /etc/inittab +# + +# Runlevels: +# 0 Halt +# 1(S) Single-user +# 2 Not used +# 3 Multi-user +# 4 Not used +# 5 X11 +# 6 Reboot + +## Only one of the following two lines can be uncommented! +# Boot to console +id:3:initdefault: +# Boot to X11 +#id:5:initdefault: + +rc::sysinit:/etc/rc.sysinit +rs:S1:wait:/etc/rc.single +rm:2345:wait:/etc/rc.multi +rh:06:wait:/etc/rc.shutdown +su:S:wait:/sbin/sulogin -p + +# -8 options fixes umlauts problem on login +c1:2345:respawn:/sbin/agetty -8 38400 vc/1 linux -n -l /etc/ulogin +c2:2345:respawn:/sbin/agetty -8 38400 vc/2 linux +c3:2345:respawn:/sbin/agetty -8 38400 vc/3 linux +c4:2345:respawn:/sbin/agetty -8 38400 vc/4 linux +c5:2345:respawn:/sbin/agetty -8 38400 vc/5 linux +c6:2345:respawn:/sbin/agetty -8 38400 vc/6 linux +c7:5:respawn:/usr/bin/openvt -fwc 6 -- /bin/su - mythtv -c /usr/bin/startx >& /dev/null + +ca::ctrlaltdel:/sbin/shutdown -t3 -r now + +# Example lines for starting a login manager +#x:5:respawn:/usr/bin/xdm -nodaemon +#x:5:respawn:/usr/sbin/gdm -nodaemon +#x:5:respawn:/opt/kde/bin/kdm -nodaemon +#x:5:respawn:/usr/bin/slim >& /dev/null + +# End of file diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/inittab.larchsave b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/inittab.larchsave new file mode 100644 index 0000000..2de483f --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/inittab.larchsave @@ -0,0 +1,43 @@ +# +# /etc/inittab +# + +# Runlevels: +# 0 Halt +# 1(S) Single-user +# 2 Not used +# 3 Multi-user +# 4 Not used +# 5 X11 +# 6 Reboot + +## Only one of the following two lines can be uncommented! +# Boot to console +id:5:initdefault: +# Boot to X11 +#id:5:initdefault: + +rc::sysinit:/etc/rc.sysinit +rs:S1:wait:/etc/rc.single +rm:2345:wait:/etc/rc.multi +rh:06:wait:/etc/rc.shutdown +su:S:wait:/sbin/sulogin -p + +# -8 options fixes umlauts problem on login +c1:2345:respawn:/sbin/agetty -8 38400 vc/1 linux -n -l /etc/ulogin +c2:2345:respawn:/sbin/agetty -8 38400 vc/2 linux +c3:2345:respawn:/sbin/agetty -8 38400 vc/3 linux +c4:2345:respawn:/sbin/agetty -8 38400 vc/4 linux +c5:2345:respawn:/sbin/agetty -8 38400 vc/5 linux +c6:2345:respawn:/sbin/agetty -8 38400 vc/6 linux +c7:5:respawn:/usr/bin/openvt -fwc 6 -- /bin/su - mythtv -c /usr/bin/startx >& /dev/null + +ca::ctrlaltdel:/sbin/shutdown -t3 -r now + +# Example lines for starting a login manager +#x:5:respawn:/usr/bin/xdm -nodaemon +#x:5:respawn:/usr/sbin/gdm -nodaemon +#x:5:respawn:/opt/kde/bin/kdm -nodaemon +#x:5:respawn:/usr/bin/slim >& /dev/null + +# End of file diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/larch-shutdown b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/larch-shutdown new file mode 100644 index 0000000..d614d4b --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/larch-shutdown @@ -0,0 +1,47 @@ +# Functions used by rc.shutdown +# Modified versions for larch live systems + +f_saveclock () +{ + : +} + +f_swapoff () +{ + ############################# Include session saving functions + # . /opt/larch-live/session-save/shutdown2 + # if [ -f /tmp/checkse ]; then + # . /tmp/checkse + #else + # checkse + # fi + + if [ -n "${saving}" ] && ! session_save; then + echo + echo "If you know what you are doing, you may be able to recover" + echo "something from this unpleasant situation." + echo + echo "You may use the command line to investigate further ..." + echo + echo "When finished please enter 'exit', the shutdown process will" + echo "then continue." + sh -i + fi + + ############################# + + stat_busy "Deactivating Swap" + /sbin/swapoff -a + stat_done +} + +f_remountro () +{ + if [ -n "${ejectdev}" ]; then + echo "Ejecting live CD" + eject ${ejectdev} + echo "sleeping for 6 seconds" + sleep 6 + + fi +} diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/ppp/options b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/ppp/options new file mode 100644 index 0000000..237c390 --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/ppp/options @@ -0,0 +1,352 @@ +# /etc/ppp/options +# +# Originally created by Jim Knoble <jmknoble@mercury.interpath.net> +# Modified for Debian by alvar Bray <alvar@meiko.co.uk> +# Modified for PPP Server setup by Christoph Lameter <clameter@debian.org> +# Modified for ArchLinux by Manolis Tzanidakis <manolis@archlinux.org> +# +# To quickly see what options are active in this file, use this command: +# egrep -v '#|^ *$' /etc/ppp/options + +# Specify which DNS Servers the incoming Win95 or WinNT Connection should use +# Two Servers can be remotely configured +# ms-dns 192.168.1.1 +# ms-dns 192.168.1.2 + +# Specify which WINS Servers the incoming connection Win95 or WinNT should use +# ms-wins 192.168.1.50 +# ms-wins 192.168.1.51 + +# Run the executable or shell command specified after pppd has +# terminated the link. This script could, for example, issue commands +# to the modem to cause it to hang up if hardware modem control signals +# were not available. +#disconnect "chat -- \d+++\d\c OK ath0 OK" + +# async character map -- 32-bit hex; each bit is a character +# that needs to be escaped for pppd to receive it. 0x00000001 +# represents '\x01', and 0x80000000 represents '\x1f'. +asyncmap 0 + +# Require the peer to authenticate itself before allowing network +# packets to be sent or received. +# Please do not disable this setting. It is expected to be standard in +# future releases of pppd. Use the call option (see manpage) to disable +# authentication for specific peers. +#auth + +# Use hardware flow control (i.e. RTS/CTS) to control the flow of data +# on the serial port. +crtscts + +# Use software flow control (i.e. XON/XOFF) to control the flow of data +# on the serial port. +#xonxoff + +# Specifies that certain characters should be escaped on transmission +# (regardless of whether the peer requests them to be escaped with its +# async control character map). The characters to be escaped are +# specified as a list of hex numbers separated by commas. Note that +# almost any character can be specified for the escape option, unlike +# the asyncmap option which only allows control characters to be +# specified. The characters which may not be escaped are those with hex +# values 0x20 - 0x3f or 0x5e. +#escape 11,13,ff + +# Don't use the modem control lines. +#local + +# Specifies that pppd should use a UUCP-style lock on the serial device +# to ensure exclusive access to the device. +lock + +# Don't show the passwords when logging the contents of PAP packets. +# This is the default. +hide-password + +# When logging the contents of PAP packets, this option causes pppd to +# show the password string in the log message. +#show-password + +# Use the modem control lines. On Ultrix, this option implies hardware +# flow control, as for the crtscts option. (This option is not fully +# implemented.) +modem + +# Set the MRU [Maximum Receive Unit] value to <n> for negotiation. pppd +# will ask the peer to send packets of no more than <n> bytes. The +# minimum MRU value is 128. The default MRU value is 1500. A value of +# 296 is recommended for slow links (40 bytes for TCP/IP header + 256 +# bytes of data). +#mru 542 + +# Set the interface netmask to <n>, a 32 bit netmask in "decimal dot" +# notation (e.g. 255.255.255.0). +#netmask 255.255.255.0 + +# Disables the default behaviour when no local IP address is specified, +# which is to determine (if possible) the local IP address from the +# hostname. With this option, the peer will have to supply the local IP +# address during IPCP negotiation (unless it specified explicitly on the +# command line or in an options file). +#noipdefault + +# Enables the "passive" option in the LCP. With this option, pppd will +# attempt to initiate a connection; if no reply is received from the +# peer, pppd will then just wait passively for a valid LCP packet from +# the peer (instead of exiting, as it does without this option). +#passive + +# With this option, pppd will not transmit LCP packets to initiate a +# connection until a valid LCP packet is received from the peer (as for +# the "passive" option with old versions of pppd). +#silent + +# Don't request or allow negotiation of any options for LCP and IPCP +# (use default values). +#-all + +# Disable Address/Control compression negotiation (use default, i.e. +# address/control field disabled). +#-ac + +# Disable asyncmap negotiation (use the default asyncmap, i.e. escape +# all control characters). +#-am + +# Don't fork to become a background process (otherwise pppd will do so +# if a serial device is specified). +#-detach + +# Disable IP address negotiation (with this option, the remote IP +# address must be specified with an option on the command line or in +# an options file). +#-ip + +# Disable IPCP negotiation and IP communication. This option should +# only be required if the peer is buggy and gets confused by requests +# from pppd for IPCP negotiation. +#noip + +# Disable magic number negotiation. With this option, pppd cannot +# detect a looped-back line. +#-mn + +# Disable MRU [Maximum Receive Unit] negotiation (use default, i.e. +# 1500). +#-mru + +# Disable protocol field compression negotiation (use default, i.e. +# protocol field compression disabled). +#-pc + +# Require the peer to authenticate itself using PAP. +#+pap + +# Don't agree to authenticate using PAP. +#-pap + +# Require the peer to authenticate itself using CHAP [Cryptographic +# Handshake Authentication Protocol] authentication. +#+chap + +# Don't agree to authenticate using CHAP. +#-chap + +# Disable negotiation of Van Jacobson style IP header compression (use +# default, i.e. no compression). +#-vj + +# Increase debugging level (same as -d). If this option is given, pppd +# will log the contents of all control packets sent or received in a +# readable form. The packets are logged through syslog with facility +# daemon and level debug. This information can be directed to a file by +# setting up /etc/syslog.conf appropriately (see syslog.conf(5)). (If +# pppd is compiled with extra debugging enabled, it will log messages +# using facility local2 instead of daemon). +#debug + +# Append the domain name <d> to the local host name for authentication +# purposes. For example, if gethostname() returns the name porsche, +# but the fully qualified domain name is porsche.Quotron.COM, you would +# use the domain option to set the domain name to Quotron.COM. +#domain <d> + +# Enable debugging code in the kernel-level PPP driver. The argument n +# is a number which is the sum of the following values: 1 to enable +# general debug messages, 2 to request that the contents of received +# packets be printed, and 4 to request that the contents of transmitted +# packets be printed. +#kdebug n + +# Set the MTU [Maximum Transmit Unit] value to <n>. Unless the peer +# requests a smaller value via MRU negotiation, pppd will request that +# the kernel networking code send data packets of no more than n bytes +# through the PPP network interface. +#mtu <n> + +# Set the name of the local system for authentication purposes to <n>. +# This is a privileged option. With this option, pppd will use lines in the +# secrets files which have <n> as the second field when looking for a +# secret to use in authenticating the peer. In addition, unless overridden +# with the user option, <n> will be used as the name to send to the peer +# when authenticating the local system to the peer. (Note that pppd does +# not append the domain name to <n>.) +#name <n> + +# Enforce the use of the hostname as the name of the local system for +# authentication purposes (overrides the name option). +#usehostname + +# Set the assumed name of the remote system for authentication purposes +# to <n>. +#remotename <n> + +# Add an entry to this system's ARP [Address Resolution Protocol] +# table with the IP address of the peer and the Ethernet address of this +# system. +proxyarp + +# Use the system password database for authenticating the peer using +# PAP. Note: mgetty already provides this option. If this is specified +# then dialin from users using a script under Linux to fire up ppp wont work. +# login + +# If this option is given, pppd will send an LCP echo-request frame to the +# peer every n seconds. Normally the peer should respond to the echo-request +# by sending an echo-reply. This option can be used with the +# lcp-echo-failure option to detect that the peer is no longer connected. +lcp-echo-interval 30 + +# If this option is given, pppd will presume the peer to be dead if n +# LCP echo-requests are sent without receiving a valid LCP echo-reply. +# If this happens, pppd will terminate the connection. Use of this +# option requires a non-zero value for the lcp-echo-interval parameter. +# This option can be used to enable pppd to terminate after the physical +# connection has been broken (e.g., the modem has hung up) in +# situations where no hardware modem control lines are available. +lcp-echo-failure 4 + +# Set the LCP restart interval (retransmission timeout) to <n> seconds +# (default 3). +#lcp-restart <n> + +# Set the maximum number of LCP terminate-request transmissions to <n> +# (default 3). +#lcp-max-terminate <n> + +# Set the maximum number of LCP configure-request transmissions to <n> +# (default 10). +#lcp-max-configure <n> + +# Set the maximum number of LCP configure-NAKs returned before starting +# to send configure-Rejects instead to <n> (default 10). +#lcp-max-failure <n> + +# Set the IPCP restart interval (retransmission timeout) to <n> +# seconds (default 3). +#ipcp-restart <n> + +# Set the maximum number of IPCP terminate-request transmissions to <n> +# (default 3). +#ipcp-max-terminate <n> + +# Set the maximum number of IPCP configure-request transmissions to <n> +# (default 10). +#ipcp-max-configure <n> + +# Set the maximum number of IPCP configure-NAKs returned before starting +# to send configure-Rejects instead to <n> (default 10). +#ipcp-max-failure <n> + +# Set the PAP restart interval (retransmission timeout) to <n> seconds +# (default 3). +#pap-restart <n> + +# Set the maximum number of PAP authenticate-request transmissions to +# <n> (default 10). +#pap-max-authreq <n> + +# Set the maximum time that pppd will wait for the peer to authenticate +# itself with PAP to <n> seconds (0 means no limit). +#pap-timeout <n> + +# Set the CHAP restart interval (retransmission timeout for +# challenges) to <n> seconds (default 3). +#chap-restart <n> + +# Set the maximum number of CHAP challenge transmissions to <n> +# (default 10). +#chap-max-challenge + +# If this option is given, pppd will rechallenge the peer every <n> +# seconds. +#chap-interval <n> + +# With this option, pppd will accept the peer's idea of our local IP +# address, even if the local IP address was specified in an option. +#ipcp-accept-local + +# With this option, pppd will accept the peer's idea of its (remote) IP +# address, even if the remote IP address was specified in an option. +#ipcp-accept-remote + +# Disable the IPXCP and IPX protocols. +# To let pppd pass IPX packets comment this out --- you'll probably also +# want to install ipxripd, and have the Internal IPX Network option enabled +# in your kernel. /usr/doc/HOWTO/IPX-HOWTO.gz contains more info. +noipx + +# Exit once a connection has been made and terminated. This is the default, +# unless the `persist' or `demand' option has been specified. +#nopersist + +# Do not exit after a connection is terminated; instead try to reopen +# the connection. +#persist + +# Terminate after n consecutive failed connection attempts. +# A value of 0 means no limit. The default value is 10. +#maxfail <n> + +# Initiate the link only on demand, i.e. when data traffic is present. +# With this option, the remote IP address must be specified by the user on +# the command line or in an options file. Pppd will initially configure +# the interface and enable it for IP traffic without connecting to the peer. +# When traffic is available, pppd will connect to the peer and perform +# negotiation, authentication, etc. When this is completed, pppd will +# commence passing data packets (i.e., IP packets) across the link. +#demand + +# Specifies that pppd should disconnect if the link is idle for <n> seconds. +# The link is idle when no data packets (i.e. IP packets) are being sent or +# received. Note: it is not advisable to use this option with the persist +# option without the demand option. If the active-filter option is given, +# data packets which are rejected by the specified activity filter also +# count as the link being idle. +#idle <n> + +# Specifies how many seconds to wait before re-initiating the link after +# it terminates. This option only has any effect if the persist or demand +# option is used. The holdoff period is not applied if the link was +# terminated because it was idle. +#holdoff <n> + +# Wait for up n milliseconds after the connect script finishes for a valid +# PPP packet from the peer. At the end of this time, or when a valid PPP +# packet is received from the peer, pppd will commence negotiation by +# sending its first LCP packet. The default value is 1000 (1 second). +# This wait period only applies if the connect or pty option is used. +#connect-delay <n> + +# Packet filtering: for more information, see pppd(8) +# Any packets matching the filter expression will be interpreted as link +# activity, and will cause a "demand" connection to be activated, and reset +# the idle connection timer. (idle option) +# The filter expression is akin to that of tcpdump(1) +#active-filter <filter-expression> + +# uncomment the line below this if you use PPPoE +#plugin /usr/lib/pppd/plugins/pppoe.so + +# ---<End of File>--- diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/rc.local b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/rc.local new file mode 100755 index 0000000..2d488a2 --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/rc.local @@ -0,0 +1,93 @@ +#!/bin/bash +# +# /etc/rc.local: Local multi-user startup script. +# +. /etc/rc.conf +. /etc/rc.d/functions +. /etc/profile +. ${MV_ROOT}/bin/install_functions.sh + +function mysql_check { + mysql -e "show databases;" 2>/dev/null >/dev/null + return $? +} + +function mythconverg_check { + mysql mythconverg -e "describe settings;" 2>/dev/null >/dev/null + return $? +} + +function install_db { + pacman --noconfirm -R mythdb-initial 2>/dev/null > /dev/null + pacman -S --noconfirm mythdb-initial 2>/dev/null > /dev/null +} + + + + +#check to see if mysql is running +stat_busy "Checking Mysql" +ATTEMPT=0 +mysql_check && printhl " Installing the initial database" &&install_db +mythconverg_check +status=$? +while [ ! $status = 0 ] +do + ((ATTEMPT=ATTEMPT+1)) + /etc/rc.d/mysqld stop + sleep 2 + /etc/rc.d/mysqld start + mysqlstatus=$? + if [ $mysqlstatus = 0 ] + then + mysql_check && install_db + mythconverg_check + status=$? + fi + if [ $ATTEMPT = 20 ] + then + printhl " Could not start mysql or install mythconverg within 20 attempts" + printhl " Aborting install" + exit 20 + fi +done +stat_done + +#check network parms +stat_busy "Checking network" +init_network +stat_done + +stat_busy "Probing network" +request_dhcp & +stat_done + +#save some cmdline options +stat_busy "Parsing command line" +parse_cmdline_2_db +bootsplash_setup +stat_done + +#search for remote +stat_busy "Checking for remote" +init_remote +stat_done +printhl "Finished" + + +echo $CMDLINE | grep -qi NoX +if [ $? = 0 ] +then + echo "" + printhl "No auto X option found" + # /usr/bin/chvt 2 +else + /root/startx & +fi + + +# Set up automatically logged in user +if [ -f /.livesys/autologin ]; then + cp /.livesys/autologin /tmp/newuser +fi + diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/rc.local.orig b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/rc.local.orig new file mode 100755 index 0000000..47b24ef --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/rc.local.orig @@ -0,0 +1,7 @@ +#!/bin/bash +# +# /etc/rc.local: Local multi-user startup script. +# + +# Restore saved sound volume, etc. +alsactl restore diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/rc.local.shutdown b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/rc.local.shutdown new file mode 100755 index 0000000..2b5f735 --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/rc.local.shutdown @@ -0,0 +1,7 @@ +#!/bin/bash +# +# /etc/rc.local.shutdown: Local shutdown script. +# + +# Save sound volume, etc. +alsactl store diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/skel/.bash_profile b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/skel/.bash_profile new file mode 100644 index 0000000..600bd9b --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/skel/.bash_profile @@ -0,0 +1,3 @@ +. $HOME/.bashrc + +. /etc/X11/xinit/startx.custom diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/skel/.bashrc b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/skel/.bashrc new file mode 100644 index 0000000..fcabce0 --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/skel/.bashrc @@ -0,0 +1,3 @@ +alias ls='ls --color=auto' +PS1='[\u@\h \W]\$ ' + diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/skel/.xinitrc b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/skel/.xinitrc new file mode 100644 index 0000000..c6febe5 --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/skel/.xinitrc @@ -0,0 +1,17 @@ +#!/bin/sh + +# +# ~/.xinitrc +# +# Executed by startx (run your window manager from here) +# + +# exec gnome-session +# exec startkde +# exec startxfce4 +# exec icewm +# exec openbox +# exec blackbox +exec fluxbox +# exec ratpoison +# exec dwm diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/skel/.xsession b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/skel/.xsession new file mode 100755 index 0000000..a16dc0b --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/skel/.xsession @@ -0,0 +1,10 @@ +#!/bin/sh + +# +# ~/.xsession +# +# Executed by xdm/gdm/kdm at login +# + +/bin/bash --login -i ~/.xinitrc + diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/slim.conf b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/slim.conf new file mode 100644 index 0000000..35ed579 --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/slim.conf @@ -0,0 +1,79 @@ +# Path, X server and arguments (if needed) +# Note: -xauth $authfile is automatically appended +default_path ./:/bin:/usr/bin:/usr/local/bin:/usr/bin +default_xserver /usr/bin/X +xserver_arguments -nolisten tcp vt07 + +# Commands for halt, login, etc. +halt_cmd /sbin/shutdown -h now +reboot_cmd /sbin/shutdown -r now +console_cmd /usr/bin/terminal -x /bin/sh -c "/bin/cat /etc/issue; exec /bin/login" +#suspend_cmd /usr/sbin/suspend + +# Full path to the xauth binary +xauth_path /usr/bin/xauth + +# Xauth file for server +authfile /var/run/slim.auth + + +# Activate numlock when slim starts. Valid values: on|off +# numlock on + +# Hide the mouse cursor (note: does not work with some WMs). +# Valid values: true|false +# hidecursor false + +# This command is executed after a succesful login. +# you can place the %session and %theme variables +# to handle launching of specific commands in .xinitrc +# depending of chosen session and slim theme +# +# NOTE: if your system does not have bash you need +# to adjust the command according to your preferred shell, +# i.e. for freebsd use: +# login_cmd exec /bin/sh - ~/.xinitrc %session +login_cmd exec /bin/bash -login ~/.xinitrc %session + +# Commands executed when starting and exiting a session. +# They can be used for registering a X11 session with +# sessreg. You can use the %user variable +# +# sessionstart_cmd some command +# sessionstop_cmd some command + +# Start in daemon mode. Valid values: yes | no +# Note that this can overridden by the command line +# option "-d" +# daemon yes + +# Available sessions (first one is the default). +# The current chosen session name is replaced in the login_cmd +# above, so your login command can handle different sessions. +# see the xinitrc.sample file shipped with slim sources +sessions xfce4,icewm,wmaker,blackbox + +# Executed when pressing F11 (requires imagemagick) +screenshot_cmd import -window root /slim.png + +# welcome message. Available variables: %host, %domain +welcome_msg Welcome to %host + +# shutdown / reboot messages +shutdown_msg The system is halting... +reboot_msg The system is rebooting... + +# default user, leave blank or remove this line +# for avoid pre-loading the username. +#default_user simone + +# current theme, use comma separated list to specify a set to +# randomly choose from +current_theme dlarch + +# Lock file +lockfile /var/lock/slim.lock + +# Log file +logfile /var/log/slim.log + diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/root/.fluxbox/apps b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/root/.fluxbox/apps new file mode 100644 index 0000000..68fae0a --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/root/.fluxbox/apps @@ -0,0 +1,2 @@ +[startup] {feh --bg-scale ~/.fluxbox/wallpaper.png} + diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/root/LinHES-install.sh b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/root/LinHES-install.sh new file mode 100755 index 0000000..6acd24a --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/root/LinHES-install.sh @@ -0,0 +1,34 @@ +#!/bin/bash +#redirect stderr to stdout, then rediret stdout to file +. /etc/profile +exec 2>&1 +exec > /tmp/mythvantage_install.log +#/usr/bin/nvidia-settings -a InitialPixmapPlacement=2 +#keylaunch & +#/usr/bin/tilda & +#/usr/X11R6/bin/unclutter -root -idle 0 -jitter 400 -noevents & +export MALLOC_CHECK_=0 +xset s off +xset -dpms +xhost + + +CMDLINE=$(cat /proc/cmdline) +echo $CMDLINE |grep -q nfsroot +NFSROOT=$? +echo $CMDLINE |grep -q clean_upgrade +if [ $? = 0 ] +then + export CLEAN_UPGRADE=YES +else + export CLEAN_UPGRADE=NO +fi +MythVantage -r + +if [ x$NFSROOT = x1 ] +then + unbuffer MythVantage & +else + NETBOOT=YES MythVantage & +fi + +exec fluxbox > /var/log/fluxbox.log 2>&1 diff --git a/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/root/startx b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/root/startx new file mode 100755 index 0000000..9274703 --- /dev/null +++ b/build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/root/startx @@ -0,0 +1,28 @@ +#!/bin/bash +. /etc/profile + +export USER=root +export HOME=/root + +CMDLINE=$(cat /proc/cmdline) +TEMPVAR=${CMDLINE#*ip=} +IP=${TEMPVAR%% *} +echo $CMDLINE |grep -q vnc +USEVNC=$? + +if [ x$USEVNC = x1 ] +then + $MV_ROOT/bin/xconfig.sh 2>/dev/null + cat /etc/X11/xorg.conf | sed -e 's/dev\/mouse/dev\/psaux/g'> /root/xorg.conf.install + startx /root/LinHES-install.sh -- -logverbose 6 -config /root/xorg.conf.install -allowMouseOpenFail 2>/tmp/x.log + else + #VNC + pacman -Sf --noconfirm tightvnc + cd /root + mkdir .vnc + echo mythvantage |vncpasswd -f > /root/.vnc/passwd + chmod 500 /root/.vnc/passwd + rm /root/.vnc/xstartup + ln -s /root/LinHES-install.sh /root/.vnc/xstartup + vncserver +fi diff --git a/build_tools/l7/larch0/profiles/l7/addedpacks b/build_tools/l7/larch0/profiles/l7/addedpacks new file mode 100644 index 0000000..4ff5db9 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/addedpacks @@ -0,0 +1,226 @@ +# These are needed to build a live CD +#linhes-live +squashfs-tools +lzop + +syslinux + +# You need a kernel. +#kernel26 is now in 'base' +aufs2 + +# To eject a cd +eject + +# Useful for use as installer, etc. +#ntfsprogs +#parted + +#ddcxinfo-knoppix +#hwd + +sudo + +lsof +cdrkit +dvd+rw-tools + + +# generally useful tools which don't require X +#mtools is required by syslinux +openssh +dosfstools +alsa-lib +alsa-oss +alsa-utils +cdparanoia +cdrdao +unzip + + +# Xorg packages +xorg-server +xorg-xkb-utils +xorg-xauth +xorg-server-utils +xorg-xinit +xorg-input-drivers +xterm +xorg-fonts-100dpi +xorg-fonts-75dpi +xorg-res-utils +ttf-ms-fonts + +#xorg-video-drivers +xf86-video-amd +xf86-video-apm +xf86-video-ark +xf86-video-ati +xf86-video-chips +xf86-video-cirrus +xf86-video-dummy +xf86-video-fbdev +xf86-video-glint +xf86-video-i128 +xf86-video-i740 +#xf86-video-i810 +#xf86-video-imstt +xf86-video-intel +xf86-video-mga +xf86-video-neomagic +xf86-video-nv +xf86-video-openchrome +xf86-video-radeonhd +xf86-video-rendition +xf86-video-s3 +xf86-video-s3virge +xf86-video-savage +xf86-video-siliconmotion +xf86-video-sis +xf86-video-sisusb +#xf86-video-tdfx +xf86-video-trident +xf86-video-tseng +#unichrome is busted and causes X to segfault +#xf86-video-unichrome +xf86-video-v4l +xf86-video-vesa +#vga should not be installed, vesa can handle when other drivers fail +#xf86-video-vga +#xf86-video-via +xf86-video-vmware +xf86-video-voodoo + +# X apps +#luser +#localed +unclutter + +#xkmap + +#gparted +#larchin + +#mythtv +mythtv +mythtv-contrib +mytharchive +mythbrowser +#mythcontrols +#mythflix +mythgallery +mythgame +mythmusic +#mythphone +myththemes +mythweather +mythvideo +mythsmolt +#morethemes +linhes-theme +linhes-scripts +nuvexport +lirc +lirc-utils +mysql +xmltv +esound + +#Window Manager +fluxbox +feh + +#Other +dbus +hal +fftw2 +libcdaudio +iptables +pkgconfig +taglib +portmap +ivtv-utils +dvb-firmware +dbus-python + +#MythVantage Installer deps +bc +mysql-python +expect +curl +dnsutils +avahi + +#Wireless +b43-fwcutter +#ipw2100-fw +#ipw2200-fw +#ipw3945 +#ipw3945-ucode +#ipw3945d +madwifi +madwifi-utils +ndiswrapper +ndiswrapper-utils +netcfg +tiacx +tiacx-firmware +wireless_tools +#wlan-ng26 +#wlan-ng26-utils +zd1211-firmware +hdhomerun +#---- +LinHES-config +LinHES-system +linhes-sounds +etcnet +runit +runit-scripts +media_dirs + +#--- +tweaker +ethtool +nfs-utils +netkit-telnet +ntp +syslog-ng +ppp +mingetty +setserial +acpid +fbsplash +linhes-splash +nvram-wakup +#tatir +pvr150-firmware +wol +mjpegtools +perl-net-upnp +aumix +tablet-encode +ntfs-3g +joyutils +ffmpeg-svn +myth2ipod +myt2xvid3 +mediaserv + +#---Firewire +libraw1394 +libavc1394 +# wrapper for mplayer +mplayer-wrapper + +# in-place commercial remover (for user job) +# moved to linhes-scripts +#removecommercials + +#Modules for Atheros base NICs +#atl1e + +linux-firmware + +larch-live +mkinitcpio-busybox diff --git a/build_tools/l7/larch0/profiles/l7/bootlines b/build_tools/l7/larch0/profiles/l7/bootlines new file mode 100644 index 0000000..929712a --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/bootlines @@ -0,0 +1,23 @@ +# The information here will be adapted for the bootloader and inserted into its configuration +# file at the place marked '###LARCH' +# This header will be removed. +# Each block must have an empty line before and after it. +# There may be no empty lines within a block. + +comment: +title: larch boot to xfce desktop +options: + +comment: +title: larch boot to xfce desktop, with vesa xorg driver +options: nomodeset xvesa + +comment: Might be useful if there is some trouble with starting xorg +title: larch boot to console +options: nox + +comment: +title: larch with swap +options: swap + +# END OF FILE diff --git a/build_tools/l7/larch0/profiles/l7/cd-root/larch/copy/actions.rc b/build_tools/l7/larch0/profiles/l7/cd-root/larch/copy/actions.rc new file mode 100644 index 0000000..dd95b26 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/cd-root/larch/copy/actions.rc @@ -0,0 +1,3 @@ +type=0 +orientation=1 + diff --git a/build_tools/l7/larch0/profiles/l7/cd-root/larch/copy/autologin b/build_tools/l7/larch0/profiles/l7/cd-root/larch/copy/autologin new file mode 100644 index 0000000..93ca142 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/cd-root/larch/copy/autologin @@ -0,0 +1 @@ +root
\ No newline at end of file diff --git a/build_tools/l7/larch0/profiles/l7/cd-root/larch/copy/bash_profile b/build_tools/l7/larch0/profiles/l7/cd-root/larch/copy/bash_profile new file mode 100644 index 0000000..c49349b --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/cd-root/larch/copy/bash_profile @@ -0,0 +1 @@ +. $HOME/.bashrc diff --git a/build_tools/l7/larch0/profiles/l7/cd-root/larch/copy/delarch b/build_tools/l7/larch0/profiles/l7/cd-root/larch/copy/delarch new file mode 100644 index 0000000..108c1a4 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/cd-root/larch/copy/delarch @@ -0,0 +1,63 @@ +# This is a script called from the installation script fix-system2. +# Its purpose is to remove custom live-only stuff from a just-installed +# system. + +# $1 is the path to the installed system root directory. + +INSTALL=$1 +if [ -z "${INSTALL}" ] || [ ! -f /etc/rc.conf ]; then + echo "ERROR: delarch installation adjustments failed:" + echo " Please check installation mount point (${INSTALL})" + exit 1 +fi + +rm -f "${INSTALL}/root/Desktop/Install Arch Linux.desktop" +rm -f "${INSTALL}/etc/rc.d/functions.d/larch-autologin" + +if [ -f ${INSTALL}/etc/rc.local.orig ]; then + mv ${INSTALL}/etc/rc.local.orig ${INSTALL}/etc/rc.local +fi +if [ -f ${INSTALL}/etc/rc.local.shutdown.orig ]; then + mv ${INSTALL}/etc/rc.local.shutdown.orig ${INSTALL}/etc/rc.local.shutdown +fi + +# start gdm from rc.conf +sed -i '/^DAEMONS=/ s|!gdm|@gdm|' ${INSTALL}/etc/rc.conf + +#***************************************************# +# Replace uses of larchquit in xfce panels and menu.# +#***************************************************# +### Unfortunately this isn't very simple. If anyone has a better way of +### providing different Quit actions in the live version and the version +### installed to disk from it, please let me know! +### Maybe it would be better just to provide a special live quit desktop +### icon which can be removed on installation, like the installation icon. + +defaultquit='<builtin name="Quit" cmd="Quit" icon="gnome-logout"/>' + +replacequit () +{ + for f in ${INSTALL}$1/.config/xfce4/panel/*; do + if grep "^Exec=larchquit" ${f}; then + n=$( echo ${f} | sed "s|^.*-\([0-9]\+\).*|\1|" ) + cp /.livesys/actions.rc \ + ${INSTALL}$1/.config/xfce4/panel/actions-${n}.rc + rm ${f} + + sed -i "s|=\"launcher\" id=\"${n}\"|=\"actions\" id=\"${n}\"|" \ + ${INSTALL}$1/.config/xfce4/panel/panels.xml + fi + done + + if [ -f ${INSTALL}$1/.bash_profile ]; then + rm -f ${INSTALL}$1/.local/share/applications/xfce4-logout.desktop + + cp /.livesys/bash_profile ${INSTALL}$1/.bash_profile + fi +} + +for hd in $( cat ${INSTALL}/etc/passwd | cut -d':' -f6 | grep '^/home/' ) \ + /root /etc/skel; do + replacequit ${hd} &>/dev/null +done +#***************************************************# diff --git a/build_tools/l7/larch0/profiles/l7/pacman.conf.repos b/build_tools/l7/larch0/profiles/l7/pacman.conf.repos new file mode 100644 index 0000000..8f9d94b --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/pacman.conf.repos @@ -0,0 +1,12 @@ +# Package repository entries for pacman.conf +# '*platform*' will be replaced by 'i686' or 'x86_64' as appropriate. +# '*default*' will be replaced by 'Include = /etc/pacman.d/mirrorlist' +# (but for the installation: a 'mirrorlist' file in the working directory will +# be preferred, or - if neither exists - then 'data/mirrorlist') + +# You can add your own custom repositories (anywhere). + +larch: Server = ftp://ftp.berlios.de/pub/larch/larch7.2/*platform* + +core-testing: Server = file:///data/pkg_repo/i686/core-testing +extra-testing: Server = file:///data/pkg_repo/i686/extra-testing diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/X11/xinit/startx.custom b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/X11/xinit/startx.custom new file mode 100644 index 0000000..d24a70a --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/X11/xinit/startx.custom @@ -0,0 +1,18 @@ +if [ -z "$DISPLAY" ] && [ ! -f /tmp/_nox_ ] \ + && echo $(tty) | grep "tty1" &>/dev/null; then + startx + + # Maybe there should be some code here to handle a failed startx? + + # The 'return' value is at /tmp/xlogout + # If there is nothing there, switch user to 'newuser' + # If there is also nothing there, login as root + # - if already root, fall through to terminal + + if [ -f /tmp/xlogout ] || [ -f /tmp/newuser ]; then + logout + elif [ ${UID} -ne 0 ]; then + echo "root" >/tmp/newuser + logout + fi +fi diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/X11/xinit/xinitrc.custom b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/X11/xinit/xinitrc.custom new file mode 100644 index 0000000..fe443d8 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/X11/xinit/xinitrc.custom @@ -0,0 +1,10 @@ +case ${desktop} in + xfce ) exec ck-launch-session xfce4-session ;; + +# Now these are only wild guesses! + gnome ) exec ck-launch-session gnome-session ;; + + kde ) exec ck-launch-session startkde ;; + + * ) ;; +esac diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/X11/xinit/xorg.conf.set b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/X11/xinit/xorg.conf.set new file mode 100755 index 0000000..4430264 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/X11/xinit/xorg.conf.set @@ -0,0 +1,9 @@ +#!/bin/sh +if [ -f /etc/X11/xorg.conf.base ]; then + cp -f /etc/X11/xorg.conf.base /etc/X11/xorg.conf + for x in $(cat /proc/cmdline); do + [ "${x}" = "nox" ] && :> /tmp/_nox_ + [ "${x}" = "xvesa" ] && sed 's|^#xvesa||' -i /etc/X11/xorg.conf + [ "${x}" = "nodri" ] && sed 's|^#nodri||' -i /etc/X11/xorg.conf + done +fi diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/X11/xorg.conf.base b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/X11/xorg.conf.base new file mode 100644 index 0000000..f6f6c0e --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/X11/xorg.conf.base @@ -0,0 +1,44 @@ +#Section "ServerFlags" +# # This deactivates input device hotplugging +# Option "AutoAddDevices" "False" +#EndSection + +Section "InputDevice" + Identifier "Generic Keyboard" + Driver "kbd" + Option "XkbRules" "xorg" +##XKMAP+ +# Option "XkbModel" "pc101" +# Option "XkbLayout" "de" +##XKMAP- +EndSection + +Section "InputDevice" + Identifier "Configured Mouse" + Driver "mouse" +EndSection + +Section "Device" + Identifier "Configured Video Device" +#xvesa Driver "vesa" +#nodri Option "DRI" "False" +# Option "AccelMethod" "exa" +EndSection + +Section "Monitor" + Identifier "Configured Monitor" +# Option "PreferredMode" "1024x768" +# HorizSync 30.0 - 65.0 +# VertRefresh 50.0 - 75.0 +EndSection + +Section "Screen" + Identifier "Default Screen" + Monitor "Configured Monitor" +# DefaultDepth 16 +# SubSection "Display" +# Viewport 0 0 +# Depth 16 +# Modes "1024x768" "800x600" +# EndSubSection +EndSection diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/conf.d/dhcpcd b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/conf.d/dhcpcd new file mode 100644 index 0000000..ab53c30 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/conf.d/dhcpcd @@ -0,0 +1,6 @@ +# +# Arguments to be passed to the DHCP client daemon +# + +DHCPCD_ARGS="-t 10 -h $HOSTNAME" + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/gdm/custom.conf b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/gdm/custom.conf new file mode 100644 index 0000000..2748075 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/gdm/custom.conf @@ -0,0 +1,105 @@ +# GDM Custom Configuration file. +# +# This file is the appropriate place for specifying your customizations to the +# GDM configuration. If you run gdmsetup, it will automatically edit this +# file for you and will cause the daemon and any running GDM GUI programs to +# automatically update with the new configuration. Not all configuration +# options are supported by gdmsetup, so to modify some values it may be +# necessary to modify this file directly by hand. +# +# This file overrides the default configuration settings. These settings +# are stored in the GDM System Defaults configuration file, which is found +# at the following location. +# +# /usr/share/gdm/defaults.conf. +# +# This file contains comments about the meaning of each configuration option, +# so is also a useful reference. Also refer to the documentation links at +# the end of this comment for further information. In short, to hand-edit +# this file, simply add or modify the key=value combination in the +# appropriate section in the template below this comment section. +# +# For example, if you want to specify a different value for the Enable key +# in the "[debug]" section of your GDM System Defaults configuration file, +# then add "Enable=true" in the "[debug]" section of this file. If the +# key already exists in this file, then simply modify it. +# +# Older versions of GDM used the "gdm.conf" file for configuration. If your +# system has an old gdm.conf file on the system, it will be used instead of +# this file - so changes made to this file will not take effect. Consider +# migrating your configuration to this file and removing the gdm.conf file. +# +# If you hand edit a GDM configuration file, you can run the following +# command and the GDM daemon will immediately reflect the change. Any +# running GDM GUI programs will also be notified to update with the new +# configuration. +# +# gdmflexiserver --command="UPDATE_CONFIG <configuration key>" +# +# e.g, the "Enable" key in the "[debug]" section would be "debug/Enable". +# +# You can also run gdm-restart or gdm-safe-restart to cause GDM to restart and +# re-read the new configuration settings. You can also restart GDM by sending +# a HUP or USR1 signal to the daemon. HUP behaves like gdm-restart and causes +# any user session started by GDM to exit immediately while USR1 behaves like +# gdm-safe-restart and will wait until all users log out before restarting GDM. +# +# For full reference documentation see the gnome help browser under +# GNOME|System category. You can also find the docs in HTML form on +# http://www.gnome.org/projects/gdm/ +# +# NOTE: Lines that begin with "#" are considered comments. +# +# Have fun! + +[daemon] + +DefaultSession=xfce4.desktop + +Greeter=/usr/lib/gdm/gdmgreeter + +[security] + +AllowRoot=true + +[xdmcp] + +[gui] + +[greeter] + + + +Browser=true + + +GraphicalTheme=dlarch-theme-gdm + + +DefaultFace=/usr/share/pixmaps/faces/astronaut.jpg + + +MinimalUID=0 + + +SoundOnLogin=false + + +IncludeAll=true + +[chooser] + +[debug] + +# Note that to disable servers defined in the GDM System Defaults +# configuration file (such as 0=Standard, you must put a line in this file +# that says 0=inactive, as described in the Configuration section of the GDM +# documentation. +# +[servers] + +# Also note, that if you redefine a [server-foo] section, then GDM will +# use the definition in this file, not the GDM System Defaults configuration +# file. It is currently not possible to disable a [server-foo] section +# defined in the GDM System Defaults configuration file. +# diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/hosts.allow b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/hosts.allow new file mode 100644 index 0000000..f8cc8f5 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/hosts.allow @@ -0,0 +1,13 @@ +# +# /etc/hosts.allow +# + +ALL: 127.0.0.1 + +# To allow ssh in from anywhere +#sshd: ALL + +# To allow ssh in from local net (example) +#sshd: 192.168.178.0/255.255.255.0 + +# End of file diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/inittab.larch b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/inittab.larch new file mode 100644 index 0000000..51f758d --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/inittab.larch @@ -0,0 +1,42 @@ +# +# /etc/inittab +# + +# Runlevels: +# 0 Halt +# 1(S) Single-user +# 2 Not used +# 3 Multi-user +# 4 Not used +# 5 X11 +# 6 Reboot + +## Only one of the following two lines can be uncommented! +# Boot to console +id:3:initdefault: +# Boot to X11 +#id:5:initdefault: + +rc::sysinit:/etc/rc.sysinit +rs:S1:wait:/etc/rc.single +rm:2345:wait:/etc/rc.multi +rh:06:wait:/etc/rc.shutdown +su:S:wait:/sbin/sulogin -p + +# -8 options fixes umlauts problem on login +c1:2345:respawn:/sbin/agetty -8 38400 tty1 linux -n -l /usr/sbin/ulogin +c2:2345:respawn:/sbin/agetty -8 38400 tty2 linux +c3:2345:respawn:/sbin/agetty -8 38400 tty3 linux +c4:2345:respawn:/sbin/agetty -8 38400 tty4 linux +c5:2345:respawn:/sbin/agetty -8 38400 tty5 linux +c6:2345:respawn:/sbin/agetty -8 38400 tty6 linux + +ca::ctrlaltdel:/sbin/shutdown -t3 -r now + +# Example lines for starting a login manager +x:5:respawn:/usr/bin/xdm -nodaemon +#x:5:respawn:/usr/sbin/gdm -nodaemon +#x:5:respawn:/usr/bin/kdm -nodaemon +#x:5:respawn:/usr/bin/slim >& /dev/null + +# End of file diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/locale.gen b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/locale.gen new file mode 100644 index 0000000..a3276b1 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/locale.gen @@ -0,0 +1,8 @@ +# locales for larch (/etc/locale.gen) + +en_US ISO-8859-1 +en_US.UTF-8 UTF-8 +de_DE ISO-8859-1 +de_DE@euro ISO-8859-15 +de_DE.UTF-8 UTF-8 + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/rc.conf b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/rc.conf new file mode 100644 index 0000000..9edb3d0 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/rc.conf @@ -0,0 +1,92 @@ +# +# /etc/rc.conf - Main Configuration for Arch Linux +# + +# ----------------------------------------------------------------------- +# LOCALIZATION +# ----------------------------------------------------------------------- +# +# LOCALE: available languages can be listed with the 'locale -a' command +# HARDWARECLOCK: set to "UTC" or "localtime" +# USEDIRECTISA: use direct I/O requests instead of /dev/rtc for hwclock +# TIMEZONE: timezones are found in /usr/share/zoneinfo +# KEYMAP: keymaps are found in /usr/share/kbd/keymaps +# CONSOLEFONT: found in /usr/share/kbd/consolefonts (only needed for non-US) +# CONSOLEMAP: found in /usr/share/kbd/consoletrans +# USECOLOR: use ANSI color sequences in startup messages +# +LOCALE="en_US.utf8" +HARDWARECLOCK="UTC" +USEDIRECTISA="no" +TIMEZONE="Europe/Berlin" +KEYMAP="de" +CONSOLEFONT= +CONSOLEMAP= +USECOLOR="yes" + +# ----------------------------------------------------------------------- +# HARDWARE +# ----------------------------------------------------------------------- +# +# MOD_AUTOLOAD: Allow autoloading of modules at boot and when needed +# MOD_BLACKLIST: Prevent udev from loading these modules +# MODULES: Modules to load at boot-up. Prefix with a ! to blacklist. +# +# NOTE: Use of 'MOD_BLACKLIST' is deprecated. Please use ! in the MODULES array. +# +MOD_AUTOLOAD="yes" +#MOD_BLACKLIST=() #deprecated +MODULES=() + +# Scan for LVM volume groups at startup, required if you use LVM +USELVM="no" + +# ----------------------------------------------------------------------- +# NETWORKING +# ----------------------------------------------------------------------- +# +# HOSTNAME: Hostname of machine. Should also be put in /etc/hosts +# +HOSTNAME="larch7-xmini" + +# Use 'ifconfig -a' or 'ls /sys/class/net/' to see all available interfaces. +# +# Interfaces to start at boot-up (in this order) +# Declare each interface then list in INTERFACES +# - prefix an entry in INTERFACES with a ! to disable it +# - no hyphens in your interface names - Bash doesn't like it +# +# DHCP: Set your interface to "dhcp" (eth0="dhcp") +# Wireless: See network profiles below +# +#eth0="eth0 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255" +eth0="dhcp" +INTERFACES=(eth0) + +# Routes to start at boot-up (in this order) +# Declare each route then list in ROUTES +# - prefix an entry in ROUTES with a ! to disable it +# +gateway="default gw 192.168.0.1" +ROUTES=(!gateway) + +# Enable these network profiles at boot-up. These are only useful +# if you happen to need multiple network configurations (ie, laptop users) +# - set to 'menu' to present a menu during boot-up (dialog package required) +# - prefix an entry with a ! to disable it +# +# Network profiles are found in /etc/network.d +# +# This now requires the netcfg package +# +#NETWORKS=(main) + +# ----------------------------------------------------------------------- +# DAEMONS +# ----------------------------------------------------------------------- +# +# Daemons to start at boot-up (in this order) +# - prefix a daemon with a ! to disable it +# - prefix a daemon with a @ to start it up in the background +# +DAEMONS=(syslog-ng @network dbus hal !gdm @sshd !crond !wicd !cups) diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/rc.d/functions.d/larch-autologin b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/rc.d/functions.d/larch-autologin new file mode 100644 index 0000000..d1c6aa3 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/rc.d/functions.d/larch-autologin @@ -0,0 +1,7 @@ +sysinit_end_larch_autologin() { + # Set up automatically logged in user (larch live system only) + if [ -f /.livesys/autologin ]; then + cp /.livesys/autologin /tmp/newuser + fi +} +add_hook sysinit_end sysinit_end_larch_autologin diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/rc.local b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/rc.local new file mode 100755 index 0000000..513c0ba --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/rc.local @@ -0,0 +1,8 @@ +#!/bin/bash +# +# /etc/rc.local: Local multi-user startup script. +# + + +# Restore saved sound volume, etc. +alsactl restore diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/rc.local.shutdown b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/rc.local.shutdown new file mode 100755 index 0000000..2b5f735 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/rc.local.shutdown @@ -0,0 +1,7 @@ +#!/bin/bash +# +# /etc/rc.local.shutdown: Local shutdown script. +# + +# Save sound volume, etc. +alsactl store diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.bash_profile b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.bash_profile new file mode 100644 index 0000000..600bd9b --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.bash_profile @@ -0,0 +1,3 @@ +. $HOME/.bashrc + +. /etc/X11/xinit/startx.custom diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.bashrc b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.bashrc new file mode 100644 index 0000000..3e5c29c --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.bashrc @@ -0,0 +1,2 @@ +alias ls='ls --color=auto' +PS1='[\u@\h \W]\$ ' diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/Terminal/terminalrc b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/Terminal/terminalrc new file mode 100644 index 0000000..172b4d3 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/Terminal/terminalrc @@ -0,0 +1,89 @@ +[Configuration] +AccelNewTab=<control><shift>t +AccelNewWindow=<control><shift>n +AccelDetachTab=<control><shift>d +AccelCloseTab=<control><shift>w +AccelCloseWindow=<control><shift>q +AccelCopy=<control><shift>c +AccelPaste=<control><shift>v +AccelPreferences=Disabled +AccelShowMenubar=Disabled +AccelShowToolbars=Disabled +AccelShowBorders=Disabled +AccelFullscreen=F11 +AccelSetTitle=Disabled +AccelReset=Disabled +AccelResetAndClear=Disabled +AccelPrevTab=<control>Page_Up +AccelNextTab=<control>Page_Down +AccelSwitchToTab1=<Alt>1 +AccelSwitchToTab2=<Alt>2 +AccelSwitchToTab3=<Alt>3 +AccelSwitchToTab4=<Alt>4 +AccelSwitchToTab5=<Alt>5 +AccelSwitchToTab6=<Alt>6 +AccelSwitchToTab7=<Alt>7 +AccelSwitchToTab8=<Alt>8 +AccelSwitchToTab9=<Alt>9 +AccelContents=F1 +BackgroundMode=TERMINAL_BACKGROUND_SOLID +BackgroundImageFile= +BackgroundImageStyle=TERMINAL_BACKGROUND_STYLE_TILED +BackgroundDarkness=0.500000 +BindingBackspace=TERMINAL_ERASE_BINDING_AUTO +BindingDelete=TERMINAL_ERASE_BINDING_AUTO +ColorForeground=White +ColorBackground=Black +ColorCursor=Green +ColorSelection=White +ColorSelectionUseDefault=TRUE +ColorPalette1=#000000000000 +ColorPalette2=#aaaa00000000 +ColorPalette3=#0000aaaa0000 +ColorPalette4=#aaaa55550000 +ColorPalette5=#00000000aaaa +ColorPalette6=#aaaa0000aaaa +ColorPalette7=#0000aaaaaaaa +ColorPalette8=#aaaaaaaaaaaa +ColorPalette9=#555555555555 +ColorPalette10=#ffff55555555 +ColorPalette11=#5555ffff5555 +ColorPalette12=#ffffffff5555 +ColorPalette13=#55555555ffff +ColorPalette14=#ffff5555ffff +ColorPalette15=#5555ffffffff +ColorPalette16=#ffffffffffff +CommandUpdateRecords=TRUE +CommandLoginShell=FALSE +FontAllowBold=TRUE +FontAntiAlias=TRUE +FontName=Monospace 12 +MiscAlwaysShowTabs=FALSE +MiscBell=FALSE +MiscBordersDefault=TRUE +MiscCursorBlinks=FALSE +MiscDefaultGeometry=80x24 +MiscInheritGeometry=FALSE +MiscMenubarDefault=TRUE +MiscMouseAutohide=FALSE +MiscToolbarsDefault=FALSE +MiscConfirmClose=TRUE +MiscCycleTabs=TRUE +MiscTabCloseButtons=TRUE +MiscTabPosition=GTK_POS_TOP +MiscHighlightUrls=TRUE +ScrollingBar=TERMINAL_SCROLLBAR_RIGHT +ScrollingLines=1000 +ScrollingOnOutput=TRUE +ScrollingOnKeystroke=TRUE +ScrollingSingleLine=TRUE +ShortcutsNoMenukey=TRUE +ShortcutsNoMnemonics=FALSE +TitleInitial=Terminal +TitleMode=TERMINAL_TITLE_APPEND +Term=xterm +VteWorkaroundTitleBug=TRUE +WordChars=-A-Za-z0-9,./?%&#:_~ +TabActivityColor=#afff00000000 +TabActivityTimeout=2.000000 + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/Thunar/thunarrc b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/Thunar/thunarrc new file mode 100644 index 0000000..7857976 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/Thunar/thunarrc @@ -0,0 +1,36 @@ +[Configuration] +DefaultView=void +LastCompactViewZoomLevel=THUNAR_ZOOM_LEVEL_SMALLEST +LastDetailsViewColumnOrder=THUNAR_COLUMN_NAME,THUNAR_COLUMN_SIZE,THUNAR_COLUMN_TYPE,THUNAR_COLUMN_DATE_MODIFIED +LastDetailsViewColumnWidths= +LastDetailsViewFixedColumns=FALSE +LastDetailsViewVisibleColumns=THUNAR_COLUMN_DATE_MODIFIED,THUNAR_COLUMN_NAME,THUNAR_COLUMN_SIZE,THUNAR_COLUMN_TYPE +LastDetailsViewZoomLevel=THUNAR_ZOOM_LEVEL_SMALLER +LastIconViewZoomLevel=THUNAR_ZOOM_LEVEL_NORMAL +LastLocationBar=ThunarLocationButtons +LastSeparatorPosition=170 +LastShowHidden=FALSE +LastSidePane=ThunarShortcutsPane +LastSortColumn=THUNAR_COLUMN_NAME +LastSortOrder=GTK_SORT_ASCENDING +LastStatusbarVisible=TRUE +LastView=ThunarIconView +LastWindowHeight=480 +LastWindowWidth=640 +MiscVolumeManagement=FALSE +MiscCaseSensitive=FALSE +MiscDateStyle=THUNAR_DATE_STYLE_SHORT +MiscFoldersFirst=TRUE +MiscHorizontalWheelNavigates=FALSE +MiscRecursivePermissions=THUNAR_RECURSIVE_PERMISSIONS_ASK +MiscRememberGeometry=TRUE +MiscShowAboutTemplates=TRUE +MiscShowThumbnails=TRUE +MiscSingleClick=TRUE +MiscSingleClickTimeout=500 +MiscTextBesideIcons=FALSE +ShortcutsIconEmblems=TRUE +ShortcutsIconSize=THUNAR_ICON_SIZE_SMALLER +TreeIconEmblems=TRUE +TreeIconSize=THUNAR_ICON_SIZE_SMALLEST + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/autostart/xfce4-settings-helper-autostart.desktop b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/autostart/xfce4-settings-helper-autostart.desktop new file mode 100644 index 0000000..5673067 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/autostart/xfce4-settings-helper-autostart.desktop @@ -0,0 +1,3 @@ +[Desktop Entry] +Hidden=true + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/autostart/xfce4-tips-autostart.desktop b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/autostart/xfce4-tips-autostart.desktop new file mode 100644 index 0000000..5673067 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/autostart/xfce4-tips-autostart.desktop @@ -0,0 +1,3 @@ +[Desktop Entry] +Hidden=true + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/cpugraph-15.rc b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/cpugraph-15.rc new file mode 100644 index 0000000..b757ec3 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/cpugraph-15.rc @@ -0,0 +1,12 @@ +UpdateInterval=2 +TimeScale=0 +Width=30 +Mode=0 +Frame=1 +AssociateCommand=xterm top +ColorMode=0 +Foreground1=#25DF25 +Foreground2=#FF0000 +Background=#FFFFFF +Foreground3=#0000FF + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/datetime-16.rc b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/datetime-16.rc new file mode 100644 index 0000000..e28dc34 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/datetime-16.rc @@ -0,0 +1,6 @@ +layout=3 +date_font=Bitstream Vera Sans 8 +time_font=Bitstream Vera Sans 10 +date_format=%Y/%m/%d +time_format=%H:%M + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/launcher-10.rc b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/launcher-10.rc new file mode 100644 index 0000000..46f8060 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/launcher-10.rc @@ -0,0 +1,12 @@ +[Global] +MoveFirst=false +ArrowPosition=0 + +[Entry 0] +Name=Web Browser +Comment=Surf the internet +Icon=web-browser +Exec=exo-open --launch WebBrowser +Terminal=false +StartupNotify=false + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/launcher-12.rc b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/launcher-12.rc new file mode 100644 index 0000000..a821f3a --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/launcher-12.rc @@ -0,0 +1,8 @@ +[Entry 0] +Name=Quit +Exec=larchquit.py xfce +Terminal=false +StartupNotify=true +Comment=Exit the current session +Icon=gnome-logout + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/launcher-7.rc b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/launcher-7.rc new file mode 100644 index 0000000..f13d351 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/launcher-7.rc @@ -0,0 +1,12 @@ +[Entry 0] +Name=Command Prompt +Comment=X terminal emulator +Icon=xfce-terminal +Exec=exo-open --launch TerminalEmulator +Terminal=false +StartupNotify=false + +[Global] +MoveFirst=false +ArrowPosition=0 + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/launcher-8.rc b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/launcher-8.rc new file mode 100644 index 0000000..dec40db --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/launcher-8.rc @@ -0,0 +1,12 @@ +[Entry 0] +Name=Editor +Comment=Edit text files +Icon=xfce-edit +Exec=mousepad +Terminal=false +StartupNotify=false + +[Global] +MoveFirst=false +ArrowPosition=0 + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/launcher-9.rc b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/launcher-9.rc new file mode 100644 index 0000000..804f588 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/launcher-9.rc @@ -0,0 +1,12 @@ +[Global] +MoveFirst=false +ArrowPosition=0 + +[Entry 0] +Name=File Manager +Comment=Manage files and folders +Icon=Thunar +Exec=thunar +Terminal=false +StartupNotify=true + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/pager-2.rc b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/pager-2.rc new file mode 100644 index 0000000..b485293 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/pager-2.rc @@ -0,0 +1,4 @@ +rows=1 +scrolling=true +show-names=false + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/panels.xml b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/panels.xml new file mode 100644 index 0000000..87366cd --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/panels.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE config SYSTEM "config.dtd"> +<panels> + <panel> + <properties> + <property name="size" value="28"/> + <property name="monitor" value="0"/> + <property name="screen-position" value="11"/> + <property name="fullwidth" value="1"/> + <property name="xoffset" value="0"/> + <property name="yoffset" value="738"/> + <property name="handlestyle" value="0"/> + <property name="autohide" value="0"/> + <property name="transparency" value="20"/> + <property name="activetrans" value="0"/> + </properties> + <items> + <item name="xfce4-menu" id="5"/> + <item name="separator" id="6"/> + <item name="launcher" id="7"/> + <item name="launcher" id="8"/> + <item name="launcher" id="9"/> + <item name="launcher" id="10"/> + <item name="tasklist" id="3"/> + <item name="systray" id="4"/> + <item name="pager" id="2"/> + <item name="showdesktop" id="1"/> + <item name="separator" id="11"/> + <item name="xfce4-mixer-plugin" id="17"/> + <item name="cpugraph" id="15"/> + <item name="datetime" id="16"/> + <item name="separator" id="13"/> + <item name="launcher" id="12"/> + </items> + </panel> +</panels> diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/separator-11.rc b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/separator-11.rc new file mode 100644 index 0000000..c46dd6a --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/separator-11.rc @@ -0,0 +1,2 @@ +separator-type=2 + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/separator-13.rc b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/separator-13.rc new file mode 100644 index 0000000..c46dd6a --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/separator-13.rc @@ -0,0 +1,2 @@ +separator-type=2 + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/separator-6.rc b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/separator-6.rc new file mode 100644 index 0000000..c46dd6a --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/separator-6.rc @@ -0,0 +1,2 @@ +separator-type=2 + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/systray-4.rc b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/systray-4.rc new file mode 100644 index 0000000..6b4370d --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/systray-4.rc @@ -0,0 +1,7 @@ +[Global] +ShowFrame=false +Rows=1 + +[Applications] +xfce4-power-manager=false + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/tasklist-3.rc b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/tasklist-3.rc new file mode 100644 index 0000000..7a8acf3 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/tasklist-3.rc @@ -0,0 +1,7 @@ +grouping=1 +width=300 +all_workspaces=false +expand=true +flat_buttons=true +show_handles=true + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/xfce4-menu-5.rc b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/xfce4-menu-5.rc new file mode 100644 index 0000000..f532525 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/xfce4-menu-5.rc @@ -0,0 +1,7 @@ +use_default_menu=true +menu_file= +icon_file=/usr/share/pixmaps/xfce4_xicon1.png +show_menu_icons=true +button_title=Xfce Menu +show_button_title=false + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/xfce4-mixer-plugin-17.rc b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/xfce4-mixer-plugin-17.rc new file mode 100644 index 0000000..efd19ae --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/xfce4-mixer-plugin-17.rc @@ -0,0 +1,7 @@ +[mixer-plugin] +Device=default +LauncherCommand=xfce4-mixer +LauncherRunInTerminal=false +LauncherUseStartupNotification=false +MasterControl=Master,0 + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.local/share/applications/xfce4-logout.desktop b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.local/share/applications/xfce4-logout.desktop new file mode 100644 index 0000000..47d1bff --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.local/share/applications/xfce4-logout.desktop @@ -0,0 +1,75 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Encoding=UTF-8 +Exec=larchquit.py xfce +Icon=system-log-out +StartupNotify=true +Terminal=false +Categories=X-XFCE;X-Xfce-Toplevel; +OnlyShowIn=XFCE; +Name=Log Out +Name[ar]=تسجيل الخروج +Name[be]=Выйсьці +Name[ca]=Surt +Name[cs]=Odhlásit se +Name[da]=Logud +Name[de]=Abmelden +Name[el]=Αποσύνδεση +Name[en_GB]=Log Out +Name[es]=Cerrar sesión +Name[et]=Kirjuta välja +Name[eu]=Saio itxi +Name[fi]=Lopeta +Name[fr]=Déconnexion +Name[hu]=Kijelentkezés +Name[id]=Log Keluar +Name[it]=Fine sessione +Name[ja]=ログアウト +Name[ko]=종료 +Name[lv]=Atteikties +Name[nb]=Logg ut +Name[nl]=Uitloggen +Name[pa]=ਲਾਗ ਆਉਟ +Name[pl]=Wyloguj +Name[pt]=Sair +Name[pt_BR]=Sair +Name[ru]=Выйти +Name[sq]=Dilni +Name[sv]=Logga ut +Name[tr]=Çık +Name[uk]=Завершити сеанс +Name[ur]=لاگ آؤٹ +Name[zh_CN]=注销 +Comment=Log out of the Xfce Desktop +Comment[ar]=تسجيل الخروج من سطح مكتب Xfce +Comment[be]=Выхад з асяроддзя Xfce 4 +Comment[ca]=Surt de l’escriptori Xfce +Comment[cs]=Odhlásit se z prostředí Xfce +Comment[da]=Logud af Xfce-skrivebordet +Comment[de]=Von der Arbeitsumgebung abmelden +Comment[el]=Αποσυνδεθείτε από το Xfce +Comment[en_GB]=Log out of the Xfce Desktop +Comment[es]=Salir del escritorio Xfce +Comment[et]=Kirjuta Xfce-töölauast välja +Comment[eu]=Saioa itxi Xfce idazmahaiean +Comment[fi]=Kirjaudu ulos Xfce-työpöydältä +Comment[fr]=Déconnexion du bureau Xfce +Comment[hu]=Kijelentkezés az Xfce Munkakörnyezetből +Comment[id]=Log keluar Destop Xfce +Comment[it]=Fine sessione di Xfce +Comment[ja]=Xfce デスクトップからログアウトします +Comment[ko]=Xfce 4 데스크탑 종료 +Comment[lv]=Atteikties no Xfce darbavirsmas +Comment[nb]=Logg av Xfce skrivebordet +Comment[pa]=Xfce ਡੈਸਕਟਾਪ ਤੋਂ ਲਾਗ ਆਉਟ +Comment[pl]=Wyloguj się z Xfce +Comment[pt]=Sair do Ambiente Xfce +Comment[pt_BR]=Sair do Xfce +Comment[ru]=Выйти из Xfce +Comment[sq]=Dil prej Desktopit Xfce 4 +Comment[sv]=Logga ut från Xfce-skrivbordet +Comment[tr]=Xfce Masaüstünden çık +Comment[uk]=Завершити сеанс Xfce +Comment[ur]=ایکسفس ڈیسک ٹاپ سے لاگ آؤٹ کریں +Comment[zh_CN]=注销 Xfce diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.xinitrc b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.xinitrc new file mode 100644 index 0000000..112e032 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.xinitrc @@ -0,0 +1,2 @@ +desktop=xfce +. /etc/X11/xinit/xinitrc.custom diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.xsession b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.xsession new file mode 100755 index 0000000..a16dc0b --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.xsession @@ -0,0 +1,10 @@ +#!/bin/sh + +# +# ~/.xsession +# +# Executed by xdm/gdm/kdm at login +# + +/bin/bash --login -i ~/.xinitrc + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.bash_profile b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.bash_profile new file mode 100644 index 0000000..600bd9b --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.bash_profile @@ -0,0 +1,3 @@ +. $HOME/.bashrc + +. /etc/X11/xinit/startx.custom diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.bashrc b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.bashrc new file mode 100644 index 0000000..3e5c29c --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.bashrc @@ -0,0 +1,2 @@ +alias ls='ls --color=auto' +PS1='[\u@\h \W]\$ ' diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/Terminal/terminalrc b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/Terminal/terminalrc new file mode 100644 index 0000000..172b4d3 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/Terminal/terminalrc @@ -0,0 +1,89 @@ +[Configuration] +AccelNewTab=<control><shift>t +AccelNewWindow=<control><shift>n +AccelDetachTab=<control><shift>d +AccelCloseTab=<control><shift>w +AccelCloseWindow=<control><shift>q +AccelCopy=<control><shift>c +AccelPaste=<control><shift>v +AccelPreferences=Disabled +AccelShowMenubar=Disabled +AccelShowToolbars=Disabled +AccelShowBorders=Disabled +AccelFullscreen=F11 +AccelSetTitle=Disabled +AccelReset=Disabled +AccelResetAndClear=Disabled +AccelPrevTab=<control>Page_Up +AccelNextTab=<control>Page_Down +AccelSwitchToTab1=<Alt>1 +AccelSwitchToTab2=<Alt>2 +AccelSwitchToTab3=<Alt>3 +AccelSwitchToTab4=<Alt>4 +AccelSwitchToTab5=<Alt>5 +AccelSwitchToTab6=<Alt>6 +AccelSwitchToTab7=<Alt>7 +AccelSwitchToTab8=<Alt>8 +AccelSwitchToTab9=<Alt>9 +AccelContents=F1 +BackgroundMode=TERMINAL_BACKGROUND_SOLID +BackgroundImageFile= +BackgroundImageStyle=TERMINAL_BACKGROUND_STYLE_TILED +BackgroundDarkness=0.500000 +BindingBackspace=TERMINAL_ERASE_BINDING_AUTO +BindingDelete=TERMINAL_ERASE_BINDING_AUTO +ColorForeground=White +ColorBackground=Black +ColorCursor=Green +ColorSelection=White +ColorSelectionUseDefault=TRUE +ColorPalette1=#000000000000 +ColorPalette2=#aaaa00000000 +ColorPalette3=#0000aaaa0000 +ColorPalette4=#aaaa55550000 +ColorPalette5=#00000000aaaa +ColorPalette6=#aaaa0000aaaa +ColorPalette7=#0000aaaaaaaa +ColorPalette8=#aaaaaaaaaaaa +ColorPalette9=#555555555555 +ColorPalette10=#ffff55555555 +ColorPalette11=#5555ffff5555 +ColorPalette12=#ffffffff5555 +ColorPalette13=#55555555ffff +ColorPalette14=#ffff5555ffff +ColorPalette15=#5555ffffffff +ColorPalette16=#ffffffffffff +CommandUpdateRecords=TRUE +CommandLoginShell=FALSE +FontAllowBold=TRUE +FontAntiAlias=TRUE +FontName=Monospace 12 +MiscAlwaysShowTabs=FALSE +MiscBell=FALSE +MiscBordersDefault=TRUE +MiscCursorBlinks=FALSE +MiscDefaultGeometry=80x24 +MiscInheritGeometry=FALSE +MiscMenubarDefault=TRUE +MiscMouseAutohide=FALSE +MiscToolbarsDefault=FALSE +MiscConfirmClose=TRUE +MiscCycleTabs=TRUE +MiscTabCloseButtons=TRUE +MiscTabPosition=GTK_POS_TOP +MiscHighlightUrls=TRUE +ScrollingBar=TERMINAL_SCROLLBAR_RIGHT +ScrollingLines=1000 +ScrollingOnOutput=TRUE +ScrollingOnKeystroke=TRUE +ScrollingSingleLine=TRUE +ShortcutsNoMenukey=TRUE +ShortcutsNoMnemonics=FALSE +TitleInitial=Terminal +TitleMode=TERMINAL_TITLE_APPEND +Term=xterm +VteWorkaroundTitleBug=TRUE +WordChars=-A-Za-z0-9,./?%&#:_~ +TabActivityColor=#afff00000000 +TabActivityTimeout=2.000000 + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/Thunar/thunarrc b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/Thunar/thunarrc new file mode 100644 index 0000000..7857976 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/Thunar/thunarrc @@ -0,0 +1,36 @@ +[Configuration] +DefaultView=void +LastCompactViewZoomLevel=THUNAR_ZOOM_LEVEL_SMALLEST +LastDetailsViewColumnOrder=THUNAR_COLUMN_NAME,THUNAR_COLUMN_SIZE,THUNAR_COLUMN_TYPE,THUNAR_COLUMN_DATE_MODIFIED +LastDetailsViewColumnWidths= +LastDetailsViewFixedColumns=FALSE +LastDetailsViewVisibleColumns=THUNAR_COLUMN_DATE_MODIFIED,THUNAR_COLUMN_NAME,THUNAR_COLUMN_SIZE,THUNAR_COLUMN_TYPE +LastDetailsViewZoomLevel=THUNAR_ZOOM_LEVEL_SMALLER +LastIconViewZoomLevel=THUNAR_ZOOM_LEVEL_NORMAL +LastLocationBar=ThunarLocationButtons +LastSeparatorPosition=170 +LastShowHidden=FALSE +LastSidePane=ThunarShortcutsPane +LastSortColumn=THUNAR_COLUMN_NAME +LastSortOrder=GTK_SORT_ASCENDING +LastStatusbarVisible=TRUE +LastView=ThunarIconView +LastWindowHeight=480 +LastWindowWidth=640 +MiscVolumeManagement=FALSE +MiscCaseSensitive=FALSE +MiscDateStyle=THUNAR_DATE_STYLE_SHORT +MiscFoldersFirst=TRUE +MiscHorizontalWheelNavigates=FALSE +MiscRecursivePermissions=THUNAR_RECURSIVE_PERMISSIONS_ASK +MiscRememberGeometry=TRUE +MiscShowAboutTemplates=TRUE +MiscShowThumbnails=TRUE +MiscSingleClick=TRUE +MiscSingleClickTimeout=500 +MiscTextBesideIcons=FALSE +ShortcutsIconEmblems=TRUE +ShortcutsIconSize=THUNAR_ICON_SIZE_SMALLER +TreeIconEmblems=TRUE +TreeIconSize=THUNAR_ICON_SIZE_SMALLEST + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/autostart/xfce4-settings-helper-autostart.desktop b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/autostart/xfce4-settings-helper-autostart.desktop new file mode 100644 index 0000000..5673067 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/autostart/xfce4-settings-helper-autostart.desktop @@ -0,0 +1,3 @@ +[Desktop Entry] +Hidden=true + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/autostart/xfce4-tips-autostart.desktop b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/autostart/xfce4-tips-autostart.desktop new file mode 100644 index 0000000..5673067 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/autostart/xfce4-tips-autostart.desktop @@ -0,0 +1,3 @@ +[Desktop Entry] +Hidden=true + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/cpugraph-15.rc b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/cpugraph-15.rc new file mode 100644 index 0000000..b757ec3 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/cpugraph-15.rc @@ -0,0 +1,12 @@ +UpdateInterval=2 +TimeScale=0 +Width=30 +Mode=0 +Frame=1 +AssociateCommand=xterm top +ColorMode=0 +Foreground1=#25DF25 +Foreground2=#FF0000 +Background=#FFFFFF +Foreground3=#0000FF + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/datetime-16.rc b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/datetime-16.rc new file mode 100644 index 0000000..e28dc34 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/datetime-16.rc @@ -0,0 +1,6 @@ +layout=3 +date_font=Bitstream Vera Sans 8 +time_font=Bitstream Vera Sans 10 +date_format=%Y/%m/%d +time_format=%H:%M + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/launcher-10.rc b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/launcher-10.rc new file mode 100644 index 0000000..46f8060 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/launcher-10.rc @@ -0,0 +1,12 @@ +[Global] +MoveFirst=false +ArrowPosition=0 + +[Entry 0] +Name=Web Browser +Comment=Surf the internet +Icon=web-browser +Exec=exo-open --launch WebBrowser +Terminal=false +StartupNotify=false + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/launcher-12.rc b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/launcher-12.rc new file mode 100644 index 0000000..a821f3a --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/launcher-12.rc @@ -0,0 +1,8 @@ +[Entry 0] +Name=Quit +Exec=larchquit.py xfce +Terminal=false +StartupNotify=true +Comment=Exit the current session +Icon=gnome-logout + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/launcher-7.rc b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/launcher-7.rc new file mode 100644 index 0000000..f13d351 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/launcher-7.rc @@ -0,0 +1,12 @@ +[Entry 0] +Name=Command Prompt +Comment=X terminal emulator +Icon=xfce-terminal +Exec=exo-open --launch TerminalEmulator +Terminal=false +StartupNotify=false + +[Global] +MoveFirst=false +ArrowPosition=0 + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/launcher-8.rc b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/launcher-8.rc new file mode 100644 index 0000000..dec40db --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/launcher-8.rc @@ -0,0 +1,12 @@ +[Entry 0] +Name=Editor +Comment=Edit text files +Icon=xfce-edit +Exec=mousepad +Terminal=false +StartupNotify=false + +[Global] +MoveFirst=false +ArrowPosition=0 + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/launcher-9.rc b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/launcher-9.rc new file mode 100644 index 0000000..804f588 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/launcher-9.rc @@ -0,0 +1,12 @@ +[Global] +MoveFirst=false +ArrowPosition=0 + +[Entry 0] +Name=File Manager +Comment=Manage files and folders +Icon=Thunar +Exec=thunar +Terminal=false +StartupNotify=true + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/pager-2.rc b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/pager-2.rc new file mode 100644 index 0000000..b485293 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/pager-2.rc @@ -0,0 +1,4 @@ +rows=1 +scrolling=true +show-names=false + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/panels.xml b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/panels.xml new file mode 100644 index 0000000..87366cd --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/panels.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE config SYSTEM "config.dtd"> +<panels> + <panel> + <properties> + <property name="size" value="28"/> + <property name="monitor" value="0"/> + <property name="screen-position" value="11"/> + <property name="fullwidth" value="1"/> + <property name="xoffset" value="0"/> + <property name="yoffset" value="738"/> + <property name="handlestyle" value="0"/> + <property name="autohide" value="0"/> + <property name="transparency" value="20"/> + <property name="activetrans" value="0"/> + </properties> + <items> + <item name="xfce4-menu" id="5"/> + <item name="separator" id="6"/> + <item name="launcher" id="7"/> + <item name="launcher" id="8"/> + <item name="launcher" id="9"/> + <item name="launcher" id="10"/> + <item name="tasklist" id="3"/> + <item name="systray" id="4"/> + <item name="pager" id="2"/> + <item name="showdesktop" id="1"/> + <item name="separator" id="11"/> + <item name="xfce4-mixer-plugin" id="17"/> + <item name="cpugraph" id="15"/> + <item name="datetime" id="16"/> + <item name="separator" id="13"/> + <item name="launcher" id="12"/> + </items> + </panel> +</panels> diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/separator-11.rc b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/separator-11.rc new file mode 100644 index 0000000..c46dd6a --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/separator-11.rc @@ -0,0 +1,2 @@ +separator-type=2 + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/separator-13.rc b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/separator-13.rc new file mode 100644 index 0000000..c46dd6a --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/separator-13.rc @@ -0,0 +1,2 @@ +separator-type=2 + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/separator-6.rc b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/separator-6.rc new file mode 100644 index 0000000..c46dd6a --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/separator-6.rc @@ -0,0 +1,2 @@ +separator-type=2 + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/systray-4.rc b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/systray-4.rc new file mode 100644 index 0000000..6b4370d --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/systray-4.rc @@ -0,0 +1,7 @@ +[Global] +ShowFrame=false +Rows=1 + +[Applications] +xfce4-power-manager=false + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/tasklist-3.rc b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/tasklist-3.rc new file mode 100644 index 0000000..7a8acf3 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/tasklist-3.rc @@ -0,0 +1,7 @@ +grouping=1 +width=300 +all_workspaces=false +expand=true +flat_buttons=true +show_handles=true + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/xfce4-menu-5.rc b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/xfce4-menu-5.rc new file mode 100644 index 0000000..f532525 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/xfce4-menu-5.rc @@ -0,0 +1,7 @@ +use_default_menu=true +menu_file= +icon_file=/usr/share/pixmaps/xfce4_xicon1.png +show_menu_icons=true +button_title=Xfce Menu +show_button_title=false + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/xfce4-mixer-plugin-17.rc b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/xfce4-mixer-plugin-17.rc new file mode 100644 index 0000000..efd19ae --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/xfce4-mixer-plugin-17.rc @@ -0,0 +1,7 @@ +[mixer-plugin] +Device=default +LauncherCommand=xfce4-mixer +LauncherRunInTerminal=false +LauncherUseStartupNotification=false +MasterControl=Master,0 + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.local/share/applications/xfce4-logout.desktop b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.local/share/applications/xfce4-logout.desktop new file mode 100644 index 0000000..47d1bff --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.local/share/applications/xfce4-logout.desktop @@ -0,0 +1,75 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Encoding=UTF-8 +Exec=larchquit.py xfce +Icon=system-log-out +StartupNotify=true +Terminal=false +Categories=X-XFCE;X-Xfce-Toplevel; +OnlyShowIn=XFCE; +Name=Log Out +Name[ar]=تسجيل الخروج +Name[be]=Выйсьці +Name[ca]=Surt +Name[cs]=Odhlásit se +Name[da]=Logud +Name[de]=Abmelden +Name[el]=Αποσύνδεση +Name[en_GB]=Log Out +Name[es]=Cerrar sesión +Name[et]=Kirjuta välja +Name[eu]=Saio itxi +Name[fi]=Lopeta +Name[fr]=Déconnexion +Name[hu]=Kijelentkezés +Name[id]=Log Keluar +Name[it]=Fine sessione +Name[ja]=ログアウト +Name[ko]=종료 +Name[lv]=Atteikties +Name[nb]=Logg ut +Name[nl]=Uitloggen +Name[pa]=ਲਾਗ ਆਉਟ +Name[pl]=Wyloguj +Name[pt]=Sair +Name[pt_BR]=Sair +Name[ru]=Выйти +Name[sq]=Dilni +Name[sv]=Logga ut +Name[tr]=Çık +Name[uk]=Завершити сеанс +Name[ur]=لاگ آؤٹ +Name[zh_CN]=注销 +Comment=Log out of the Xfce Desktop +Comment[ar]=تسجيل الخروج من سطح مكتب Xfce +Comment[be]=Выхад з асяроддзя Xfce 4 +Comment[ca]=Surt de l’escriptori Xfce +Comment[cs]=Odhlásit se z prostředí Xfce +Comment[da]=Logud af Xfce-skrivebordet +Comment[de]=Von der Arbeitsumgebung abmelden +Comment[el]=Αποσυνδεθείτε από το Xfce +Comment[en_GB]=Log out of the Xfce Desktop +Comment[es]=Salir del escritorio Xfce +Comment[et]=Kirjuta Xfce-töölauast välja +Comment[eu]=Saioa itxi Xfce idazmahaiean +Comment[fi]=Kirjaudu ulos Xfce-työpöydältä +Comment[fr]=Déconnexion du bureau Xfce +Comment[hu]=Kijelentkezés az Xfce Munkakörnyezetből +Comment[id]=Log keluar Destop Xfce +Comment[it]=Fine sessione di Xfce +Comment[ja]=Xfce デスクトップからログアウトします +Comment[ko]=Xfce 4 데스크탑 종료 +Comment[lv]=Atteikties no Xfce darbavirsmas +Comment[nb]=Logg av Xfce skrivebordet +Comment[pa]=Xfce ਡੈਸਕਟਾਪ ਤੋਂ ਲਾਗ ਆਉਟ +Comment[pl]=Wyloguj się z Xfce +Comment[pt]=Sair do Ambiente Xfce +Comment[pt_BR]=Sair do Xfce +Comment[ru]=Выйти из Xfce +Comment[sq]=Dil prej Desktopit Xfce 4 +Comment[sv]=Logga ut från Xfce-skrivbordet +Comment[tr]=Xfce Masaüstünden çık +Comment[uk]=Завершити сеанс Xfce +Comment[ur]=ایکسفس ڈیسک ٹاپ سے لاگ آؤٹ کریں +Comment[zh_CN]=注销 Xfce diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.ssh/id_rsa.pub b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.ssh/id_rsa.pub new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.ssh/id_rsa.pub diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.xinitrc b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.xinitrc new file mode 100644 index 0000000..112e032 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.xinitrc @@ -0,0 +1,2 @@ +desktop=xfce +. /etc/X11/xinit/xinitrc.custom diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.xsession b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.xsession new file mode 100755 index 0000000..a16dc0b --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.xsession @@ -0,0 +1,10 @@ +#!/bin/sh + +# +# ~/.xsession +# +# Executed by xdm/gdm/kdm at login +# + +/bin/bash --login -i ~/.xinitrc + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/Desktop/Install Arch Linux.desktop b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/Desktop/Install Arch Linux.desktop new file mode 100644 index 0000000..4f8bb8d --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/Desktop/Install Arch Linux.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Application +Name=Install Arch Linux +Comment=larchin, the larch / Arch installer +Categories=Application; +Exec=larchin +Icon=larchin +Terminal=false +StartupNotify=true +GenericName= diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/Desktop/Larch Documentation.desktop b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/Desktop/Larch Documentation.desktop new file mode 100644 index 0000000..ba0baac --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/Desktop/Larch Documentation.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Application +Name=Larch Documentation +Comment= +Categories=Application; +Exec=xdg-open file:///opt/apps/larch/docs/html/index.html +Icon=larch +Terminal=false +StartupNotify=true diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/X11/xinit/startx.custom b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/X11/xinit/startx.custom new file mode 100644 index 0000000..8e3ec5e --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/X11/xinit/startx.custom @@ -0,0 +1,22 @@ +if grep -v nox /proc/cmdline &>/dev/null && \ + [ -z "$DISPLAY" ] && echo $(tty) | grep /vc/1 &>/dev/null; then + if grep i810 /proc/cmdline &>/dev/null; then + startx -- -config xorg.conf.i810 + else + startx + fi + + # Maybe there should be some code here to handle a failed startx? + + # The 'return' value is at /tmp/xlogout + # If there is nothing there, switch user to 'newuser' + # If there is also nothing there, login as root + # - if already root, fall through to terminal + + if [ -f /tmp/xlogout ] || [ -f /tmp/newuser ]; then + logout + elif [ ${UID} -ne 0 ]; then + echo "root" >/tmp/newuser + logout + fi +fi diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/X11/xinit/xinitrc.custom b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/X11/xinit/xinitrc.custom new file mode 100644 index 0000000..5f04171 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/X11/xinit/xinitrc.custom @@ -0,0 +1,4 @@ +# Set the keymap +xkmap-set + +exec fluxbox diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/X11/xorg.conf b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/X11/xorg.conf new file mode 100644 index 0000000..6d11b2e --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/X11/xorg.conf @@ -0,0 +1,49 @@ +Section "ServerLayout" + Identifier "X.org Configured" + Screen 0 "Screen0" 0 0 +EndSection + +Section "Device" + Identifier "Card0" + Driver "vesa" +EndSection + +Section "Monitor" + Identifier "Monitor0" + HorizSync 30.0 - 65.0 + VertRefresh 50.0 - 75.0 +EndSection + +Section "Screen" + Identifier "Screen0" + Device "Card0" + Monitor "Monitor0" + DefaultDepth 16 + SubSection "Display" + Viewport 0 0 + Depth 1 + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 4 + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 8 + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 15 + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 16 + Modes "1024x768" "800x600" + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 24 + EndSubSection +EndSection + + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/X11/xorg.conf.i810 b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/X11/xorg.conf.i810 new file mode 100644 index 0000000..9615569 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/X11/xorg.conf.i810 @@ -0,0 +1,59 @@ +Section "ServerLayout" + Identifier "X.org Configured" + Screen 0 "Screen0" 0 0 +EndSection + +Section "Device" + ### Available Driver options are:- + ### Values: <i>: integer, <f>: float, <bool>: "True"/"False", + ### <string>: "String", <freq>: "<f> Hz/kHz/MHz" + ### [arg]: arg optional + #Option "NoAccel" # [<bool>] + #Option "SWcursor" # [<bool>] + #Option "ColorKey" # <i> + #Option "CacheLines" # <i> + #Option "Dac6Bit" # [<bool>] + #Option "DRI" # [<bool>] + #Option "NoDDC" # [<bool>] + #Option "ShowCache" # [<bool>] + #Option "XvMCSurfaces" # <i> + #Option "PageFlip" # [<bool>] + Option "DRI" "False" + #Option "AccelMethod" "exa" + #Option "MigrationHeuristic" "greedy" + #Option "ExaNoComposite" "False" + Identifier "Card0" + Driver "intel" +EndSection + +Section "Screen" + Identifier "Screen0" + Device "Card0" + Monitor "Monitor0" + SubSection "Display" + Viewport 0 0 + Depth 1 + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 4 + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 8 + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 15 + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 16 + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 24 + EndSubSection +EndSection + + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/X11/xorg.conf.i810.2 b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/X11/xorg.conf.i810.2 new file mode 100644 index 0000000..a295b38 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/X11/xorg.conf.i810.2 @@ -0,0 +1,67 @@ +Section "ServerLayout" + Identifier "X.org Configured" + Screen 0 "Screen0" 0 0 +EndSection + +Section "Device" + ### Available Driver options are:- + ### Values: <i>: integer, <f>: float, <bool>: "True"/"False", + ### <string>: "String", <freq>: "<f> Hz/kHz/MHz" + ### [arg]: arg optional + #Option "NoAccel" # [<bool>] + #Option "SWcursor" # [<bool>] + #Option "ColorKey" # <i> + #Option "CacheLines" # <i> + #Option "Dac6Bit" # [<bool>] + #Option "DRI" # [<bool>] + #Option "NoDDC" # [<bool>] + #Option "ShowCache" # [<bool>] + #Option "XvMCSurfaces" # <i> + #Option "PageFlip" # [<bool>] + Option "DRI" "False" + #Option "AccelMethod" "exa" + #Option "MigrationHeuristic" "greedy" + #Option "ExaNoComposite" "False" + Identifier "Card0" + Driver "intel" +EndSection + +Section "Monitor" + Identifier "Monitor0" + HorizSync 30.0 - 65.0 + VertRefresh 50.0 - 75.0 +EndSection + +Section "Screen" + Identifier "Screen0" + Device "Card0" + Monitor "Monitor0" + DefaultDepth 16 + SubSection "Display" + Viewport 0 0 + Depth 1 + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 4 + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 8 + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 15 + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 16 + Modes "1024x768" "800x600" + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 24 + EndSubSection +EndSection + + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/X11/xorg.conf.vesa b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/X11/xorg.conf.vesa new file mode 100644 index 0000000..6d11b2e --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/X11/xorg.conf.vesa @@ -0,0 +1,49 @@ +Section "ServerLayout" + Identifier "X.org Configured" + Screen 0 "Screen0" 0 0 +EndSection + +Section "Device" + Identifier "Card0" + Driver "vesa" +EndSection + +Section "Monitor" + Identifier "Monitor0" + HorizSync 30.0 - 65.0 + VertRefresh 50.0 - 75.0 +EndSection + +Section "Screen" + Identifier "Screen0" + Device "Card0" + Monitor "Monitor0" + DefaultDepth 16 + SubSection "Display" + Viewport 0 0 + Depth 1 + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 4 + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 8 + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 15 + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 16 + Modes "1024x768" "800x600" + EndSubSection + SubSection "Display" + Viewport 0 0 + Depth 24 + EndSubSection +EndSection + + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/conf.d/dhcpcd b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/conf.d/dhcpcd new file mode 100644 index 0000000..ab53c30 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/conf.d/dhcpcd @@ -0,0 +1,6 @@ +# +# Arguments to be passed to the DHCP client daemon +# + +DHCPCD_ARGS="-t 10 -h $HOSTNAME" + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/conf.d/fbsplash.bootsteps b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/conf.d/fbsplash.bootsteps new file mode 100644 index 0000000..64bb6b7 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/conf.d/fbsplash.bootsteps @@ -0,0 +1 @@ +30 diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/conf.d/fbsplash.conf b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/conf.d/fbsplash.conf new file mode 100644 index 0000000..ddd88f8 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/conf.d/fbsplash.conf @@ -0,0 +1,8 @@ +# +# fbsplash.conf +# + +THEMES="linhes" +SPLASH_TTYS="1 2 3 4 5 6" + +#EOF diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/conf.d/fbsplash.shutdownsteps b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/conf.d/fbsplash.shutdownsteps new file mode 100644 index 0000000..7f8f011 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/conf.d/fbsplash.shutdownsteps @@ -0,0 +1 @@ +7 diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/hosts.allow b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/hosts.allow new file mode 100644 index 0000000..19bc4d8 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/hosts.allow @@ -0,0 +1,13 @@ +# +# /etc/hosts.allow +# + +ALL: 127.0.0.1 + +# To allow ssh in from anywhere +sshd: ALL + +# To allow ssh in from local net (example) +#sshd: 192.168.178.0/255.255.255.0 + +# End of file diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/inittab b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/inittab new file mode 100644 index 0000000..39003ed --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/inittab @@ -0,0 +1,43 @@ +# +# /etc/inittab +# + +# Runlevels: +# 0 Halt +# 1(S) Single-user +# 2 Not used +# 3 Multi-user +# 4 Not used +# 5 X11 +# 6 Reboot + +## Only one of the following two lines can be uncommented! +# Boot to console +id:3:initdefault: +# Boot to X11 +#id:5:initdefault: + +rc::sysinit:/etc/rc.sysinit +rs:S1:wait:/etc/rc.single +rm:2345:wait:/etc/rc.multi +rh:06:wait:/etc/rc.shutdown +su:S:wait:/sbin/sulogin -p + +# -8 options fixes umlauts problem on login +c1:2345:respawn:/sbin/agetty -8 38400 vc/1 linux -n -l /etc/ulogin +c2:2345:respawn:/sbin/agetty -8 38400 vc/2 linux +c3:2345:respawn:/sbin/agetty -8 38400 vc/3 linux +c4:2345:respawn:/sbin/agetty -8 38400 vc/4 linux +c5:2345:respawn:/sbin/agetty -8 38400 vc/5 linux +c6:2345:respawn:/sbin/agetty -8 38400 vc/6 linux +c7:5:respawn:/usr/bin/openvt -fwc 6 -- /bin/su - mythtv -c /usr/bin/startx >& /dev/null + +ca::ctrlaltdel:/sbin/shutdown -t3 -r now + +# Example lines for starting a login manager +#x:5:respawn:/usr/bin/xdm -nodaemon +#x:5:respawn:/usr/sbin/gdm -nodaemon +#x:5:respawn:/opt/kde/bin/kdm -nodaemon +#x:5:respawn:/usr/bin/slim >& /dev/null + +# End of file diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/inittab.larchsave b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/inittab.larchsave new file mode 100644 index 0000000..2de483f --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/inittab.larchsave @@ -0,0 +1,43 @@ +# +# /etc/inittab +# + +# Runlevels: +# 0 Halt +# 1(S) Single-user +# 2 Not used +# 3 Multi-user +# 4 Not used +# 5 X11 +# 6 Reboot + +## Only one of the following two lines can be uncommented! +# Boot to console +id:5:initdefault: +# Boot to X11 +#id:5:initdefault: + +rc::sysinit:/etc/rc.sysinit +rs:S1:wait:/etc/rc.single +rm:2345:wait:/etc/rc.multi +rh:06:wait:/etc/rc.shutdown +su:S:wait:/sbin/sulogin -p + +# -8 options fixes umlauts problem on login +c1:2345:respawn:/sbin/agetty -8 38400 vc/1 linux -n -l /etc/ulogin +c2:2345:respawn:/sbin/agetty -8 38400 vc/2 linux +c3:2345:respawn:/sbin/agetty -8 38400 vc/3 linux +c4:2345:respawn:/sbin/agetty -8 38400 vc/4 linux +c5:2345:respawn:/sbin/agetty -8 38400 vc/5 linux +c6:2345:respawn:/sbin/agetty -8 38400 vc/6 linux +c7:5:respawn:/usr/bin/openvt -fwc 6 -- /bin/su - mythtv -c /usr/bin/startx >& /dev/null + +ca::ctrlaltdel:/sbin/shutdown -t3 -r now + +# Example lines for starting a login manager +#x:5:respawn:/usr/bin/xdm -nodaemon +#x:5:respawn:/usr/sbin/gdm -nodaemon +#x:5:respawn:/opt/kde/bin/kdm -nodaemon +#x:5:respawn:/usr/bin/slim >& /dev/null + +# End of file diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/larch-shutdown b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/larch-shutdown new file mode 100644 index 0000000..d614d4b --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/larch-shutdown @@ -0,0 +1,47 @@ +# Functions used by rc.shutdown +# Modified versions for larch live systems + +f_saveclock () +{ + : +} + +f_swapoff () +{ + ############################# Include session saving functions + # . /opt/larch-live/session-save/shutdown2 + # if [ -f /tmp/checkse ]; then + # . /tmp/checkse + #else + # checkse + # fi + + if [ -n "${saving}" ] && ! session_save; then + echo + echo "If you know what you are doing, you may be able to recover" + echo "something from this unpleasant situation." + echo + echo "You may use the command line to investigate further ..." + echo + echo "When finished please enter 'exit', the shutdown process will" + echo "then continue." + sh -i + fi + + ############################# + + stat_busy "Deactivating Swap" + /sbin/swapoff -a + stat_done +} + +f_remountro () +{ + if [ -n "${ejectdev}" ]; then + echo "Ejecting live CD" + eject ${ejectdev} + echo "sleeping for 6 seconds" + sleep 6 + + fi +} diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/mkinitcpio.conf.larch b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/mkinitcpio.conf.larch new file mode 100644 index 0000000..0a9b572 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/mkinitcpio.conf.larch @@ -0,0 +1,65 @@ +# vim:set ft=sh +# MODULES +# The following modules are loaded before any boot hooks are +# run. Advanced users may wish to specify all system modules +# in this array. For instance: +# MODULES="piix ide_disk reiserfs" +MODULES="" + +# BINARIES +# This setting includes, into the CPIO image, and additional +# binaries a given user may wish. This is run first, so may +# be used to override the actual binaries used in a given hook. +# (Existing files are NOT overwritten is already added) +# BINARIES are dependancy parsed, so you may safely ignore libraries +BINARIES="" + +# FILES +# This setting is similar to BINARIES above, however, files are added +# as-is and are not parsed in anyway. This is useful for config files. +# Some users may wish to include modprobe.conf for custom module options, +# like so: +# FILES="/etc/modprobe.conf" +FILES="" + +# HOOKS +# This is the most important setting in this file. The HOOKS control the +# modules and scripts added to the image, and what happens at boot time. +# Order is important, and it is recommended that you do not change the +# order in which HOOKS are added. Run 'mkinitcpio -H <hook name>' for +# help on a given hook. +# 'base' is _required_ unless you know precisely what you are doing. +# 'udev' is _required_ in order to automatically load modules +# 'filesystems' is _required_ unless you specify your fs modules in MODULES +# Examples: +# This setup specifies all modules in the MODULES setting above. +# No raid, lvm2, or encrypted root is needed. +# HOOKS="base" +# +# This setup will autodetect all modules for your system and should +# work as a sane default +# HOOKS="base udev autodetect pata scsi sata filesystems" +# +# This is identical to the above, except the old ide subsystem is +# used for IDE devices instead of the new pata subsystem. +# HOOKS="base udev autodetect ide scsi sata filesystems" +# +# This setup will generate a 'full' image which supports most systems. +# No autodetection is done. +# HOOKS="base udev pata scsi sata usb filesystems" +# +# This setup assembles an pata raid array with an encrypted root FS. +# Note: See 'mkinitcpio -H raid' for more information on raid devices. +# HOOKS="base udev pata raid encrypt filesystems" +# +# This setup loads an lvm2 volume group on a usb device. +# HOOKS="base udev usb lvm2 filesystems" +HOOKS="base udev autodetect pata scsi sata filesystems larch1 larch2_aufs larch3 fbsplash" + +# COMPRESSION +# Use this to compress the initramfs image. With kernels earlier than +# 2.6.30, only gzip is supported, which is also the default. Newer kernels +# support gzip, bzip2 and lzma. +#COMPRESSION="gzip" +#COMPRESSION="bzip2" +#COMPRESSION="lzma" diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/ppp/options b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/ppp/options new file mode 100644 index 0000000..237c390 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/ppp/options @@ -0,0 +1,352 @@ +# /etc/ppp/options +# +# Originally created by Jim Knoble <jmknoble@mercury.interpath.net> +# Modified for Debian by alvar Bray <alvar@meiko.co.uk> +# Modified for PPP Server setup by Christoph Lameter <clameter@debian.org> +# Modified for ArchLinux by Manolis Tzanidakis <manolis@archlinux.org> +# +# To quickly see what options are active in this file, use this command: +# egrep -v '#|^ *$' /etc/ppp/options + +# Specify which DNS Servers the incoming Win95 or WinNT Connection should use +# Two Servers can be remotely configured +# ms-dns 192.168.1.1 +# ms-dns 192.168.1.2 + +# Specify which WINS Servers the incoming connection Win95 or WinNT should use +# ms-wins 192.168.1.50 +# ms-wins 192.168.1.51 + +# Run the executable or shell command specified after pppd has +# terminated the link. This script could, for example, issue commands +# to the modem to cause it to hang up if hardware modem control signals +# were not available. +#disconnect "chat -- \d+++\d\c OK ath0 OK" + +# async character map -- 32-bit hex; each bit is a character +# that needs to be escaped for pppd to receive it. 0x00000001 +# represents '\x01', and 0x80000000 represents '\x1f'. +asyncmap 0 + +# Require the peer to authenticate itself before allowing network +# packets to be sent or received. +# Please do not disable this setting. It is expected to be standard in +# future releases of pppd. Use the call option (see manpage) to disable +# authentication for specific peers. +#auth + +# Use hardware flow control (i.e. RTS/CTS) to control the flow of data +# on the serial port. +crtscts + +# Use software flow control (i.e. XON/XOFF) to control the flow of data +# on the serial port. +#xonxoff + +# Specifies that certain characters should be escaped on transmission +# (regardless of whether the peer requests them to be escaped with its +# async control character map). The characters to be escaped are +# specified as a list of hex numbers separated by commas. Note that +# almost any character can be specified for the escape option, unlike +# the asyncmap option which only allows control characters to be +# specified. The characters which may not be escaped are those with hex +# values 0x20 - 0x3f or 0x5e. +#escape 11,13,ff + +# Don't use the modem control lines. +#local + +# Specifies that pppd should use a UUCP-style lock on the serial device +# to ensure exclusive access to the device. +lock + +# Don't show the passwords when logging the contents of PAP packets. +# This is the default. +hide-password + +# When logging the contents of PAP packets, this option causes pppd to +# show the password string in the log message. +#show-password + +# Use the modem control lines. On Ultrix, this option implies hardware +# flow control, as for the crtscts option. (This option is not fully +# implemented.) +modem + +# Set the MRU [Maximum Receive Unit] value to <n> for negotiation. pppd +# will ask the peer to send packets of no more than <n> bytes. The +# minimum MRU value is 128. The default MRU value is 1500. A value of +# 296 is recommended for slow links (40 bytes for TCP/IP header + 256 +# bytes of data). +#mru 542 + +# Set the interface netmask to <n>, a 32 bit netmask in "decimal dot" +# notation (e.g. 255.255.255.0). +#netmask 255.255.255.0 + +# Disables the default behaviour when no local IP address is specified, +# which is to determine (if possible) the local IP address from the +# hostname. With this option, the peer will have to supply the local IP +# address during IPCP negotiation (unless it specified explicitly on the +# command line or in an options file). +#noipdefault + +# Enables the "passive" option in the LCP. With this option, pppd will +# attempt to initiate a connection; if no reply is received from the +# peer, pppd will then just wait passively for a valid LCP packet from +# the peer (instead of exiting, as it does without this option). +#passive + +# With this option, pppd will not transmit LCP packets to initiate a +# connection until a valid LCP packet is received from the peer (as for +# the "passive" option with old versions of pppd). +#silent + +# Don't request or allow negotiation of any options for LCP and IPCP +# (use default values). +#-all + +# Disable Address/Control compression negotiation (use default, i.e. +# address/control field disabled). +#-ac + +# Disable asyncmap negotiation (use the default asyncmap, i.e. escape +# all control characters). +#-am + +# Don't fork to become a background process (otherwise pppd will do so +# if a serial device is specified). +#-detach + +# Disable IP address negotiation (with this option, the remote IP +# address must be specified with an option on the command line or in +# an options file). +#-ip + +# Disable IPCP negotiation and IP communication. This option should +# only be required if the peer is buggy and gets confused by requests +# from pppd for IPCP negotiation. +#noip + +# Disable magic number negotiation. With this option, pppd cannot +# detect a looped-back line. +#-mn + +# Disable MRU [Maximum Receive Unit] negotiation (use default, i.e. +# 1500). +#-mru + +# Disable protocol field compression negotiation (use default, i.e. +# protocol field compression disabled). +#-pc + +# Require the peer to authenticate itself using PAP. +#+pap + +# Don't agree to authenticate using PAP. +#-pap + +# Require the peer to authenticate itself using CHAP [Cryptographic +# Handshake Authentication Protocol] authentication. +#+chap + +# Don't agree to authenticate using CHAP. +#-chap + +# Disable negotiation of Van Jacobson style IP header compression (use +# default, i.e. no compression). +#-vj + +# Increase debugging level (same as -d). If this option is given, pppd +# will log the contents of all control packets sent or received in a +# readable form. The packets are logged through syslog with facility +# daemon and level debug. This information can be directed to a file by +# setting up /etc/syslog.conf appropriately (see syslog.conf(5)). (If +# pppd is compiled with extra debugging enabled, it will log messages +# using facility local2 instead of daemon). +#debug + +# Append the domain name <d> to the local host name for authentication +# purposes. For example, if gethostname() returns the name porsche, +# but the fully qualified domain name is porsche.Quotron.COM, you would +# use the domain option to set the domain name to Quotron.COM. +#domain <d> + +# Enable debugging code in the kernel-level PPP driver. The argument n +# is a number which is the sum of the following values: 1 to enable +# general debug messages, 2 to request that the contents of received +# packets be printed, and 4 to request that the contents of transmitted +# packets be printed. +#kdebug n + +# Set the MTU [Maximum Transmit Unit] value to <n>. Unless the peer +# requests a smaller value via MRU negotiation, pppd will request that +# the kernel networking code send data packets of no more than n bytes +# through the PPP network interface. +#mtu <n> + +# Set the name of the local system for authentication purposes to <n>. +# This is a privileged option. With this option, pppd will use lines in the +# secrets files which have <n> as the second field when looking for a +# secret to use in authenticating the peer. In addition, unless overridden +# with the user option, <n> will be used as the name to send to the peer +# when authenticating the local system to the peer. (Note that pppd does +# not append the domain name to <n>.) +#name <n> + +# Enforce the use of the hostname as the name of the local system for +# authentication purposes (overrides the name option). +#usehostname + +# Set the assumed name of the remote system for authentication purposes +# to <n>. +#remotename <n> + +# Add an entry to this system's ARP [Address Resolution Protocol] +# table with the IP address of the peer and the Ethernet address of this +# system. +proxyarp + +# Use the system password database for authenticating the peer using +# PAP. Note: mgetty already provides this option. If this is specified +# then dialin from users using a script under Linux to fire up ppp wont work. +# login + +# If this option is given, pppd will send an LCP echo-request frame to the +# peer every n seconds. Normally the peer should respond to the echo-request +# by sending an echo-reply. This option can be used with the +# lcp-echo-failure option to detect that the peer is no longer connected. +lcp-echo-interval 30 + +# If this option is given, pppd will presume the peer to be dead if n +# LCP echo-requests are sent without receiving a valid LCP echo-reply. +# If this happens, pppd will terminate the connection. Use of this +# option requires a non-zero value for the lcp-echo-interval parameter. +# This option can be used to enable pppd to terminate after the physical +# connection has been broken (e.g., the modem has hung up) in +# situations where no hardware modem control lines are available. +lcp-echo-failure 4 + +# Set the LCP restart interval (retransmission timeout) to <n> seconds +# (default 3). +#lcp-restart <n> + +# Set the maximum number of LCP terminate-request transmissions to <n> +# (default 3). +#lcp-max-terminate <n> + +# Set the maximum number of LCP configure-request transmissions to <n> +# (default 10). +#lcp-max-configure <n> + +# Set the maximum number of LCP configure-NAKs returned before starting +# to send configure-Rejects instead to <n> (default 10). +#lcp-max-failure <n> + +# Set the IPCP restart interval (retransmission timeout) to <n> +# seconds (default 3). +#ipcp-restart <n> + +# Set the maximum number of IPCP terminate-request transmissions to <n> +# (default 3). +#ipcp-max-terminate <n> + +# Set the maximum number of IPCP configure-request transmissions to <n> +# (default 10). +#ipcp-max-configure <n> + +# Set the maximum number of IPCP configure-NAKs returned before starting +# to send configure-Rejects instead to <n> (default 10). +#ipcp-max-failure <n> + +# Set the PAP restart interval (retransmission timeout) to <n> seconds +# (default 3). +#pap-restart <n> + +# Set the maximum number of PAP authenticate-request transmissions to +# <n> (default 10). +#pap-max-authreq <n> + +# Set the maximum time that pppd will wait for the peer to authenticate +# itself with PAP to <n> seconds (0 means no limit). +#pap-timeout <n> + +# Set the CHAP restart interval (retransmission timeout for +# challenges) to <n> seconds (default 3). +#chap-restart <n> + +# Set the maximum number of CHAP challenge transmissions to <n> +# (default 10). +#chap-max-challenge + +# If this option is given, pppd will rechallenge the peer every <n> +# seconds. +#chap-interval <n> + +# With this option, pppd will accept the peer's idea of our local IP +# address, even if the local IP address was specified in an option. +#ipcp-accept-local + +# With this option, pppd will accept the peer's idea of its (remote) IP +# address, even if the remote IP address was specified in an option. +#ipcp-accept-remote + +# Disable the IPXCP and IPX protocols. +# To let pppd pass IPX packets comment this out --- you'll probably also +# want to install ipxripd, and have the Internal IPX Network option enabled +# in your kernel. /usr/doc/HOWTO/IPX-HOWTO.gz contains more info. +noipx + +# Exit once a connection has been made and terminated. This is the default, +# unless the `persist' or `demand' option has been specified. +#nopersist + +# Do not exit after a connection is terminated; instead try to reopen +# the connection. +#persist + +# Terminate after n consecutive failed connection attempts. +# A value of 0 means no limit. The default value is 10. +#maxfail <n> + +# Initiate the link only on demand, i.e. when data traffic is present. +# With this option, the remote IP address must be specified by the user on +# the command line or in an options file. Pppd will initially configure +# the interface and enable it for IP traffic without connecting to the peer. +# When traffic is available, pppd will connect to the peer and perform +# negotiation, authentication, etc. When this is completed, pppd will +# commence passing data packets (i.e., IP packets) across the link. +#demand + +# Specifies that pppd should disconnect if the link is idle for <n> seconds. +# The link is idle when no data packets (i.e. IP packets) are being sent or +# received. Note: it is not advisable to use this option with the persist +# option without the demand option. If the active-filter option is given, +# data packets which are rejected by the specified activity filter also +# count as the link being idle. +#idle <n> + +# Specifies how many seconds to wait before re-initiating the link after +# it terminates. This option only has any effect if the persist or demand +# option is used. The holdoff period is not applied if the link was +# terminated because it was idle. +#holdoff <n> + +# Wait for up n milliseconds after the connect script finishes for a valid +# PPP packet from the peer. At the end of this time, or when a valid PPP +# packet is received from the peer, pppd will commence negotiation by +# sending its first LCP packet. The default value is 1000 (1 second). +# This wait period only applies if the connect or pty option is used. +#connect-delay <n> + +# Packet filtering: for more information, see pppd(8) +# Any packets matching the filter expression will be interpreted as link +# activity, and will cause a "demand" connection to be activated, and reset +# the idle connection timer. (idle option) +# The filter expression is akin to that of tcpdump(1) +#active-filter <filter-expression> + +# uncomment the line below this if you use PPPoE +#plugin /usr/lib/pppd/plugins/pppoe.so + +# ---<End of File>--- diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/rc.local b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/rc.local new file mode 100755 index 0000000..10a7e40 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/rc.local @@ -0,0 +1,93 @@ +#!/bin/bash +# +# /etc/rc.local: Local multi-user startup script. +# +. /etc/rc.conf +. /etc/rc.d/functions +. /etc/profile +. ${MV_ROOT}/bin/install_functions.sh + +function mysql_check { + mysql -e "show databases;" 2>/dev/null >/dev/null + return $? +} + +function mythconverg_check { + mysql mythconverg -e "describe settings;" 2>/dev/null >/dev/null + return $? +} + +function install_db { + pacman --noconfirm -R mythdb-initial 2>/dev/null > /dev/null + pacman -S --noconfirm mythdb-initial 2>/dev/null > /dev/null +} + + + + +#check to see if mysql is running +stat_busy "Checking Mysql" +ATTEMPT=0 +#mysql_check && printhl " Installing the initial database" &&install_db +#mythconverg_check +status=$? +while [ ! $status = 0 ] +do + ((ATTEMPT=ATTEMPT+1)) + /etc/rc.d/mysqld stop + sleep 2 + /etc/rc.d/mysqld start + mysqlstatus=$? + if [ $mysqlstatus = 0 ] + then + mysql_check && install_db + mythconverg_check + status=$? + fi + if [ $ATTEMPT = 20 ] + then + printhl " Could not start mysql or install mythconverg within 20 attempts" + printhl " Aborting install" + exit 20 + fi +done +stat_done + +#check network parms +stat_busy "Checking network" +init_network +stat_done + +stat_busy "Probing network" +request_dhcp & +stat_done + +#save some cmdline options +stat_busy "Parsing command line" +parse_cmdline_2_db +bootsplash_setup +stat_done + +#search for remote +stat_busy "Checking for remote" +init_remote +stat_done +printhl "Finished" + + +echo $CMDLINE | grep -qi NoX +if [ $? = 0 ] +then + echo "" + printhl "No auto X option found" + # /usr/bin/chvt 2 +else + /root/startx & +fi + + +# Set up automatically logged in user +if [ -f /.livesys/autologin ]; then + cp /.livesys/autologin /tmp/newuser +fi + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/rc.local.lh6 b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/rc.local.lh6 new file mode 100755 index 0000000..2d488a2 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/rc.local.lh6 @@ -0,0 +1,93 @@ +#!/bin/bash +# +# /etc/rc.local: Local multi-user startup script. +# +. /etc/rc.conf +. /etc/rc.d/functions +. /etc/profile +. ${MV_ROOT}/bin/install_functions.sh + +function mysql_check { + mysql -e "show databases;" 2>/dev/null >/dev/null + return $? +} + +function mythconverg_check { + mysql mythconverg -e "describe settings;" 2>/dev/null >/dev/null + return $? +} + +function install_db { + pacman --noconfirm -R mythdb-initial 2>/dev/null > /dev/null + pacman -S --noconfirm mythdb-initial 2>/dev/null > /dev/null +} + + + + +#check to see if mysql is running +stat_busy "Checking Mysql" +ATTEMPT=0 +mysql_check && printhl " Installing the initial database" &&install_db +mythconverg_check +status=$? +while [ ! $status = 0 ] +do + ((ATTEMPT=ATTEMPT+1)) + /etc/rc.d/mysqld stop + sleep 2 + /etc/rc.d/mysqld start + mysqlstatus=$? + if [ $mysqlstatus = 0 ] + then + mysql_check && install_db + mythconverg_check + status=$? + fi + if [ $ATTEMPT = 20 ] + then + printhl " Could not start mysql or install mythconverg within 20 attempts" + printhl " Aborting install" + exit 20 + fi +done +stat_done + +#check network parms +stat_busy "Checking network" +init_network +stat_done + +stat_busy "Probing network" +request_dhcp & +stat_done + +#save some cmdline options +stat_busy "Parsing command line" +parse_cmdline_2_db +bootsplash_setup +stat_done + +#search for remote +stat_busy "Checking for remote" +init_remote +stat_done +printhl "Finished" + + +echo $CMDLINE | grep -qi NoX +if [ $? = 0 ] +then + echo "" + printhl "No auto X option found" + # /usr/bin/chvt 2 +else + /root/startx & +fi + + +# Set up automatically logged in user +if [ -f /.livesys/autologin ]; then + cp /.livesys/autologin /tmp/newuser +fi + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/rc.local.orig b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/rc.local.orig new file mode 100755 index 0000000..47b24ef --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/rc.local.orig @@ -0,0 +1,7 @@ +#!/bin/bash +# +# /etc/rc.local: Local multi-user startup script. +# + +# Restore saved sound volume, etc. +alsactl restore diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/rc.local.shutdown b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/rc.local.shutdown new file mode 100755 index 0000000..2b5f735 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/rc.local.shutdown @@ -0,0 +1,7 @@ +#!/bin/bash +# +# /etc/rc.local.shutdown: Local shutdown script. +# + +# Save sound volume, etc. +alsactl store diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/skel/.bash_profile b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/skel/.bash_profile new file mode 100644 index 0000000..600bd9b --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/skel/.bash_profile @@ -0,0 +1,3 @@ +. $HOME/.bashrc + +. /etc/X11/xinit/startx.custom diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/skel/.bashrc b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/skel/.bashrc new file mode 100644 index 0000000..fcabce0 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/skel/.bashrc @@ -0,0 +1,3 @@ +alias ls='ls --color=auto' +PS1='[\u@\h \W]\$ ' + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/skel/.xinitrc b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/skel/.xinitrc new file mode 100644 index 0000000..c6febe5 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/skel/.xinitrc @@ -0,0 +1,17 @@ +#!/bin/sh + +# +# ~/.xinitrc +# +# Executed by startx (run your window manager from here) +# + +# exec gnome-session +# exec startkde +# exec startxfce4 +# exec icewm +# exec openbox +# exec blackbox +exec fluxbox +# exec ratpoison +# exec dwm diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/skel/.xsession b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/skel/.xsession new file mode 100755 index 0000000..a16dc0b --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/skel/.xsession @@ -0,0 +1,10 @@ +#!/bin/sh + +# +# ~/.xsession +# +# Executed by xdm/gdm/kdm at login +# + +/bin/bash --login -i ~/.xinitrc + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/slim.conf b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/slim.conf new file mode 100644 index 0000000..35ed579 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay/etc/slim.conf @@ -0,0 +1,79 @@ +# Path, X server and arguments (if needed) +# Note: -xauth $authfile is automatically appended +default_path ./:/bin:/usr/bin:/usr/local/bin:/usr/bin +default_xserver /usr/bin/X +xserver_arguments -nolisten tcp vt07 + +# Commands for halt, login, etc. +halt_cmd /sbin/shutdown -h now +reboot_cmd /sbin/shutdown -r now +console_cmd /usr/bin/terminal -x /bin/sh -c "/bin/cat /etc/issue; exec /bin/login" +#suspend_cmd /usr/sbin/suspend + +# Full path to the xauth binary +xauth_path /usr/bin/xauth + +# Xauth file for server +authfile /var/run/slim.auth + + +# Activate numlock when slim starts. Valid values: on|off +# numlock on + +# Hide the mouse cursor (note: does not work with some WMs). +# Valid values: true|false +# hidecursor false + +# This command is executed after a succesful login. +# you can place the %session and %theme variables +# to handle launching of specific commands in .xinitrc +# depending of chosen session and slim theme +# +# NOTE: if your system does not have bash you need +# to adjust the command according to your preferred shell, +# i.e. for freebsd use: +# login_cmd exec /bin/sh - ~/.xinitrc %session +login_cmd exec /bin/bash -login ~/.xinitrc %session + +# Commands executed when starting and exiting a session. +# They can be used for registering a X11 session with +# sessreg. You can use the %user variable +# +# sessionstart_cmd some command +# sessionstop_cmd some command + +# Start in daemon mode. Valid values: yes | no +# Note that this can overridden by the command line +# option "-d" +# daemon yes + +# Available sessions (first one is the default). +# The current chosen session name is replaced in the login_cmd +# above, so your login command can handle different sessions. +# see the xinitrc.sample file shipped with slim sources +sessions xfce4,icewm,wmaker,blackbox + +# Executed when pressing F11 (requires imagemagick) +screenshot_cmd import -window root /slim.png + +# welcome message. Available variables: %host, %domain +welcome_msg Welcome to %host + +# shutdown / reboot messages +shutdown_msg The system is halting... +reboot_msg The system is rebooting... + +# default user, leave blank or remove this line +# for avoid pre-loading the username. +#default_user simone + +# current theme, use comma separated list to specify a set to +# randomly choose from +current_theme dlarch + +# Lock file +lockfile /var/lock/slim.lock + +# Log file +logfile /var/log/slim.log + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay/root/.fluxbox/apps b/build_tools/l7/larch0/profiles/l7/rootoverlay/root/.fluxbox/apps new file mode 100644 index 0000000..68fae0a --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay/root/.fluxbox/apps @@ -0,0 +1,2 @@ +[startup] {feh --bg-scale ~/.fluxbox/wallpaper.png} + diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay/root/LinHES-install.sh b/build_tools/l7/larch0/profiles/l7/rootoverlay/root/LinHES-install.sh new file mode 100755 index 0000000..6acd24a --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay/root/LinHES-install.sh @@ -0,0 +1,34 @@ +#!/bin/bash +#redirect stderr to stdout, then rediret stdout to file +. /etc/profile +exec 2>&1 +exec > /tmp/mythvantage_install.log +#/usr/bin/nvidia-settings -a InitialPixmapPlacement=2 +#keylaunch & +#/usr/bin/tilda & +#/usr/X11R6/bin/unclutter -root -idle 0 -jitter 400 -noevents & +export MALLOC_CHECK_=0 +xset s off +xset -dpms +xhost + + +CMDLINE=$(cat /proc/cmdline) +echo $CMDLINE |grep -q nfsroot +NFSROOT=$? +echo $CMDLINE |grep -q clean_upgrade +if [ $? = 0 ] +then + export CLEAN_UPGRADE=YES +else + export CLEAN_UPGRADE=NO +fi +MythVantage -r + +if [ x$NFSROOT = x1 ] +then + unbuffer MythVantage & +else + NETBOOT=YES MythVantage & +fi + +exec fluxbox > /var/log/fluxbox.log 2>&1 diff --git a/build_tools/l7/larch0/profiles/l7/rootoverlay/root/startx b/build_tools/l7/larch0/profiles/l7/rootoverlay/root/startx new file mode 100755 index 0000000..9274703 --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/rootoverlay/root/startx @@ -0,0 +1,28 @@ +#!/bin/bash +. /etc/profile + +export USER=root +export HOME=/root + +CMDLINE=$(cat /proc/cmdline) +TEMPVAR=${CMDLINE#*ip=} +IP=${TEMPVAR%% *} +echo $CMDLINE |grep -q vnc +USEVNC=$? + +if [ x$USEVNC = x1 ] +then + $MV_ROOT/bin/xconfig.sh 2>/dev/null + cat /etc/X11/xorg.conf | sed -e 's/dev\/mouse/dev\/psaux/g'> /root/xorg.conf.install + startx /root/LinHES-install.sh -- -logverbose 6 -config /root/xorg.conf.install -allowMouseOpenFail 2>/tmp/x.log + else + #VNC + pacman -Sf --noconfirm tightvnc + cd /root + mkdir .vnc + echo mythvantage |vncpasswd -f > /root/.vnc/passwd + chmod 500 /root/.vnc/passwd + rm /root/.vnc/xstartup + ln -s /root/LinHES-install.sh /root/.vnc/xstartup + vncserver +fi diff --git a/build_tools/l7/larch0/profiles/l7/vetopacks b/build_tools/l7/larch0/profiles/l7/vetopacks new file mode 100644 index 0000000..f85fa2d --- /dev/null +++ b/build_tools/l7/larch0/profiles/l7/vetopacks @@ -0,0 +1,6 @@ +xterm +xorg-twm +xorg-fonts-75dpi +xorg-fonts-100dpi +xorg-docs +xorg-res-utils diff --git a/build_tools/l7/larch0/profiles/mini/addedpacks b/build_tools/l7/larch0/profiles/mini/addedpacks new file mode 100644 index 0000000..9bd654d --- /dev/null +++ b/build_tools/l7/larch0/profiles/mini/addedpacks @@ -0,0 +1,16 @@ +# Useful for use as installer, etc. +ntfsprogs +parted + +# generally useful tools which don't require X +openssh +sshfs +rsync +dosfstools +lynx +mc +unzip +zip + +lsof +dvd+rw-tools diff --git a/build_tools/l7/larch0/profiles/mini/rootoverlay/etc/conf.d/dhcpcd b/build_tools/l7/larch0/profiles/mini/rootoverlay/etc/conf.d/dhcpcd new file mode 100644 index 0000000..ab53c30 --- /dev/null +++ b/build_tools/l7/larch0/profiles/mini/rootoverlay/etc/conf.d/dhcpcd @@ -0,0 +1,6 @@ +# +# Arguments to be passed to the DHCP client daemon +# + +DHCPCD_ARGS="-t 10 -h $HOSTNAME" + diff --git a/build_tools/l7/larch0/profiles/mini/rootoverlay/etc/hosts.allow b/build_tools/l7/larch0/profiles/mini/rootoverlay/etc/hosts.allow new file mode 100644 index 0000000..f8cc8f5 --- /dev/null +++ b/build_tools/l7/larch0/profiles/mini/rootoverlay/etc/hosts.allow @@ -0,0 +1,13 @@ +# +# /etc/hosts.allow +# + +ALL: 127.0.0.1 + +# To allow ssh in from anywhere +#sshd: ALL + +# To allow ssh in from local net (example) +#sshd: 192.168.178.0/255.255.255.0 + +# End of file diff --git a/build_tools/l7/larch0/profiles/mini/rootoverlay/etc/inittab.larch b/build_tools/l7/larch0/profiles/mini/rootoverlay/etc/inittab.larch new file mode 100644 index 0000000..4b5bb7a --- /dev/null +++ b/build_tools/l7/larch0/profiles/mini/rootoverlay/etc/inittab.larch @@ -0,0 +1,42 @@ +# +# /etc/inittab +# + +# Runlevels: +# 0 Halt +# 1(S) Single-user +# 2 Not used +# 3 Multi-user +# 4 Not used +# 5 X11 +# 6 Reboot + +## Only one of the following two lines can be uncommented! +# Boot to console +id:3:initdefault: +# Boot to X11 +#id:5:initdefault: + +rc::sysinit:/etc/rc.sysinit +rs:S1:wait:/etc/rc.single +rm:2345:wait:/etc/rc.multi +rh:06:wait:/etc/rc.shutdown +su:S:wait:/sbin/sulogin -p + +# -8 options fixes umlauts problem on login +c1:2345:respawn:/sbin/agetty -8 38400 tty1 linux -n -l /usr/sbin/loginroot +c2:2345:respawn:/sbin/agetty -8 38400 tty2 linux +c3:2345:respawn:/sbin/agetty -8 38400 tty3 linux +c4:2345:respawn:/sbin/agetty -8 38400 tty4 linux +c5:2345:respawn:/sbin/agetty -8 38400 tty5 linux +c6:2345:respawn:/sbin/agetty -8 38400 tty6 linux + +ca::ctrlaltdel:/sbin/shutdown -t3 -r now + +# Example lines for starting a login manager +x:5:respawn:/usr/bin/xdm -nodaemon +#x:5:respawn:/usr/sbin/gdm -nodaemon +#x:5:respawn:/opt/kde/bin/kdm -nodaemon +#x:5:respawn:/usr/bin/slim >& /dev/null + +# End of file diff --git a/build_tools/l7/larch0/profiles/mini/rootoverlay/etc/locale.gen b/build_tools/l7/larch0/profiles/mini/rootoverlay/etc/locale.gen new file mode 100644 index 0000000..a3276b1 --- /dev/null +++ b/build_tools/l7/larch0/profiles/mini/rootoverlay/etc/locale.gen @@ -0,0 +1,8 @@ +# locales for larch (/etc/locale.gen) + +en_US ISO-8859-1 +en_US.UTF-8 UTF-8 +de_DE ISO-8859-1 +de_DE@euro ISO-8859-15 +de_DE.UTF-8 UTF-8 + diff --git a/build_tools/l7/larch0/profiles/mini/rootoverlay/etc/ppp/options b/build_tools/l7/larch0/profiles/mini/rootoverlay/etc/ppp/options new file mode 100644 index 0000000..237c390 --- /dev/null +++ b/build_tools/l7/larch0/profiles/mini/rootoverlay/etc/ppp/options @@ -0,0 +1,352 @@ +# /etc/ppp/options +# +# Originally created by Jim Knoble <jmknoble@mercury.interpath.net> +# Modified for Debian by alvar Bray <alvar@meiko.co.uk> +# Modified for PPP Server setup by Christoph Lameter <clameter@debian.org> +# Modified for ArchLinux by Manolis Tzanidakis <manolis@archlinux.org> +# +# To quickly see what options are active in this file, use this command: +# egrep -v '#|^ *$' /etc/ppp/options + +# Specify which DNS Servers the incoming Win95 or WinNT Connection should use +# Two Servers can be remotely configured +# ms-dns 192.168.1.1 +# ms-dns 192.168.1.2 + +# Specify which WINS Servers the incoming connection Win95 or WinNT should use +# ms-wins 192.168.1.50 +# ms-wins 192.168.1.51 + +# Run the executable or shell command specified after pppd has +# terminated the link. This script could, for example, issue commands +# to the modem to cause it to hang up if hardware modem control signals +# were not available. +#disconnect "chat -- \d+++\d\c OK ath0 OK" + +# async character map -- 32-bit hex; each bit is a character +# that needs to be escaped for pppd to receive it. 0x00000001 +# represents '\x01', and 0x80000000 represents '\x1f'. +asyncmap 0 + +# Require the peer to authenticate itself before allowing network +# packets to be sent or received. +# Please do not disable this setting. It is expected to be standard in +# future releases of pppd. Use the call option (see manpage) to disable +# authentication for specific peers. +#auth + +# Use hardware flow control (i.e. RTS/CTS) to control the flow of data +# on the serial port. +crtscts + +# Use software flow control (i.e. XON/XOFF) to control the flow of data +# on the serial port. +#xonxoff + +# Specifies that certain characters should be escaped on transmission +# (regardless of whether the peer requests them to be escaped with its +# async control character map). The characters to be escaped are +# specified as a list of hex numbers separated by commas. Note that +# almost any character can be specified for the escape option, unlike +# the asyncmap option which only allows control characters to be +# specified. The characters which may not be escaped are those with hex +# values 0x20 - 0x3f or 0x5e. +#escape 11,13,ff + +# Don't use the modem control lines. +#local + +# Specifies that pppd should use a UUCP-style lock on the serial device +# to ensure exclusive access to the device. +lock + +# Don't show the passwords when logging the contents of PAP packets. +# This is the default. +hide-password + +# When logging the contents of PAP packets, this option causes pppd to +# show the password string in the log message. +#show-password + +# Use the modem control lines. On Ultrix, this option implies hardware +# flow control, as for the crtscts option. (This option is not fully +# implemented.) +modem + +# Set the MRU [Maximum Receive Unit] value to <n> for negotiation. pppd +# will ask the peer to send packets of no more than <n> bytes. The +# minimum MRU value is 128. The default MRU value is 1500. A value of +# 296 is recommended for slow links (40 bytes for TCP/IP header + 256 +# bytes of data). +#mru 542 + +# Set the interface netmask to <n>, a 32 bit netmask in "decimal dot" +# notation (e.g. 255.255.255.0). +#netmask 255.255.255.0 + +# Disables the default behaviour when no local IP address is specified, +# which is to determine (if possible) the local IP address from the +# hostname. With this option, the peer will have to supply the local IP +# address during IPCP negotiation (unless it specified explicitly on the +# command line or in an options file). +#noipdefault + +# Enables the "passive" option in the LCP. With this option, pppd will +# attempt to initiate a connection; if no reply is received from the +# peer, pppd will then just wait passively for a valid LCP packet from +# the peer (instead of exiting, as it does without this option). +#passive + +# With this option, pppd will not transmit LCP packets to initiate a +# connection until a valid LCP packet is received from the peer (as for +# the "passive" option with old versions of pppd). +#silent + +# Don't request or allow negotiation of any options for LCP and IPCP +# (use default values). +#-all + +# Disable Address/Control compression negotiation (use default, i.e. +# address/control field disabled). +#-ac + +# Disable asyncmap negotiation (use the default asyncmap, i.e. escape +# all control characters). +#-am + +# Don't fork to become a background process (otherwise pppd will do so +# if a serial device is specified). +#-detach + +# Disable IP address negotiation (with this option, the remote IP +# address must be specified with an option on the command line or in +# an options file). +#-ip + +# Disable IPCP negotiation and IP communication. This option should +# only be required if the peer is buggy and gets confused by requests +# from pppd for IPCP negotiation. +#noip + +# Disable magic number negotiation. With this option, pppd cannot +# detect a looped-back line. +#-mn + +# Disable MRU [Maximum Receive Unit] negotiation (use default, i.e. +# 1500). +#-mru + +# Disable protocol field compression negotiation (use default, i.e. +# protocol field compression disabled). +#-pc + +# Require the peer to authenticate itself using PAP. +#+pap + +# Don't agree to authenticate using PAP. +#-pap + +# Require the peer to authenticate itself using CHAP [Cryptographic +# Handshake Authentication Protocol] authentication. +#+chap + +# Don't agree to authenticate using CHAP. +#-chap + +# Disable negotiation of Van Jacobson style IP header compression (use +# default, i.e. no compression). +#-vj + +# Increase debugging level (same as -d). If this option is given, pppd +# will log the contents of all control packets sent or received in a +# readable form. The packets are logged through syslog with facility +# daemon and level debug. This information can be directed to a file by +# setting up /etc/syslog.conf appropriately (see syslog.conf(5)). (If +# pppd is compiled with extra debugging enabled, it will log messages +# using facility local2 instead of daemon). +#debug + +# Append the domain name <d> to the local host name for authentication +# purposes. For example, if gethostname() returns the name porsche, +# but the fully qualified domain name is porsche.Quotron.COM, you would +# use the domain option to set the domain name to Quotron.COM. +#domain <d> + +# Enable debugging code in the kernel-level PPP driver. The argument n +# is a number which is the sum of the following values: 1 to enable +# general debug messages, 2 to request that the contents of received +# packets be printed, and 4 to request that the contents of transmitted +# packets be printed. +#kdebug n + +# Set the MTU [Maximum Transmit Unit] value to <n>. Unless the peer +# requests a smaller value via MRU negotiation, pppd will request that +# the kernel networking code send data packets of no more than n bytes +# through the PPP network interface. +#mtu <n> + +# Set the name of the local system for authentication purposes to <n>. +# This is a privileged option. With this option, pppd will use lines in the +# secrets files which have <n> as the second field when looking for a +# secret to use in authenticating the peer. In addition, unless overridden +# with the user option, <n> will be used as the name to send to the peer +# when authenticating the local system to the peer. (Note that pppd does +# not append the domain name to <n>.) +#name <n> + +# Enforce the use of the hostname as the name of the local system for +# authentication purposes (overrides the name option). +#usehostname + +# Set the assumed name of the remote system for authentication purposes +# to <n>. +#remotename <n> + +# Add an entry to this system's ARP [Address Resolution Protocol] +# table with the IP address of the peer and the Ethernet address of this +# system. +proxyarp + +# Use the system password database for authenticating the peer using +# PAP. Note: mgetty already provides this option. If this is specified +# then dialin from users using a script under Linux to fire up ppp wont work. +# login + +# If this option is given, pppd will send an LCP echo-request frame to the +# peer every n seconds. Normally the peer should respond to the echo-request +# by sending an echo-reply. This option can be used with the +# lcp-echo-failure option to detect that the peer is no longer connected. +lcp-echo-interval 30 + +# If this option is given, pppd will presume the peer to be dead if n +# LCP echo-requests are sent without receiving a valid LCP echo-reply. +# If this happens, pppd will terminate the connection. Use of this +# option requires a non-zero value for the lcp-echo-interval parameter. +# This option can be used to enable pppd to terminate after the physical +# connection has been broken (e.g., the modem has hung up) in +# situations where no hardware modem control lines are available. +lcp-echo-failure 4 + +# Set the LCP restart interval (retransmission timeout) to <n> seconds +# (default 3). +#lcp-restart <n> + +# Set the maximum number of LCP terminate-request transmissions to <n> +# (default 3). +#lcp-max-terminate <n> + +# Set the maximum number of LCP configure-request transmissions to <n> +# (default 10). +#lcp-max-configure <n> + +# Set the maximum number of LCP configure-NAKs returned before starting +# to send configure-Rejects instead to <n> (default 10). +#lcp-max-failure <n> + +# Set the IPCP restart interval (retransmission timeout) to <n> +# seconds (default 3). +#ipcp-restart <n> + +# Set the maximum number of IPCP terminate-request transmissions to <n> +# (default 3). +#ipcp-max-terminate <n> + +# Set the maximum number of IPCP configure-request transmissions to <n> +# (default 10). +#ipcp-max-configure <n> + +# Set the maximum number of IPCP configure-NAKs returned before starting +# to send configure-Rejects instead to <n> (default 10). +#ipcp-max-failure <n> + +# Set the PAP restart interval (retransmission timeout) to <n> seconds +# (default 3). +#pap-restart <n> + +# Set the maximum number of PAP authenticate-request transmissions to +# <n> (default 10). +#pap-max-authreq <n> + +# Set the maximum time that pppd will wait for the peer to authenticate +# itself with PAP to <n> seconds (0 means no limit). +#pap-timeout <n> + +# Set the CHAP restart interval (retransmission timeout for +# challenges) to <n> seconds (default 3). +#chap-restart <n> + +# Set the maximum number of CHAP challenge transmissions to <n> +# (default 10). +#chap-max-challenge + +# If this option is given, pppd will rechallenge the peer every <n> +# seconds. +#chap-interval <n> + +# With this option, pppd will accept the peer's idea of our local IP +# address, even if the local IP address was specified in an option. +#ipcp-accept-local + +# With this option, pppd will accept the peer's idea of its (remote) IP +# address, even if the remote IP address was specified in an option. +#ipcp-accept-remote + +# Disable the IPXCP and IPX protocols. +# To let pppd pass IPX packets comment this out --- you'll probably also +# want to install ipxripd, and have the Internal IPX Network option enabled +# in your kernel. /usr/doc/HOWTO/IPX-HOWTO.gz contains more info. +noipx + +# Exit once a connection has been made and terminated. This is the default, +# unless the `persist' or `demand' option has been specified. +#nopersist + +# Do not exit after a connection is terminated; instead try to reopen +# the connection. +#persist + +# Terminate after n consecutive failed connection attempts. +# A value of 0 means no limit. The default value is 10. +#maxfail <n> + +# Initiate the link only on demand, i.e. when data traffic is present. +# With this option, the remote IP address must be specified by the user on +# the command line or in an options file. Pppd will initially configure +# the interface and enable it for IP traffic without connecting to the peer. +# When traffic is available, pppd will connect to the peer and perform +# negotiation, authentication, etc. When this is completed, pppd will +# commence passing data packets (i.e., IP packets) across the link. +#demand + +# Specifies that pppd should disconnect if the link is idle for <n> seconds. +# The link is idle when no data packets (i.e. IP packets) are being sent or +# received. Note: it is not advisable to use this option with the persist +# option without the demand option. If the active-filter option is given, +# data packets which are rejected by the specified activity filter also +# count as the link being idle. +#idle <n> + +# Specifies how many seconds to wait before re-initiating the link after +# it terminates. This option only has any effect if the persist or demand +# option is used. The holdoff period is not applied if the link was +# terminated because it was idle. +#holdoff <n> + +# Wait for up n milliseconds after the connect script finishes for a valid +# PPP packet from the peer. At the end of this time, or when a valid PPP +# packet is received from the peer, pppd will commence negotiation by +# sending its first LCP packet. The default value is 1000 (1 second). +# This wait period only applies if the connect or pty option is used. +#connect-delay <n> + +# Packet filtering: for more information, see pppd(8) +# Any packets matching the filter expression will be interpreted as link +# activity, and will cause a "demand" connection to be activated, and reset +# the idle connection timer. (idle option) +# The filter expression is akin to that of tcpdump(1) +#active-filter <filter-expression> + +# uncomment the line below this if you use PPPoE +#plugin /usr/lib/pppd/plugins/pppoe.so + +# ---<End of File>--- diff --git a/build_tools/l7/larch0/profiles/mini/rootoverlay/etc/rc.conf b/build_tools/l7/larch0/profiles/mini/rootoverlay/etc/rc.conf new file mode 100644 index 0000000..0273696 --- /dev/null +++ b/build_tools/l7/larch0/profiles/mini/rootoverlay/etc/rc.conf @@ -0,0 +1,92 @@ +# +# /etc/rc.conf - Main Configuration for Arch Linux +# + +# ----------------------------------------------------------------------- +# LOCALIZATION +# ----------------------------------------------------------------------- +# +# LOCALE: available languages can be listed with the 'locale -a' command +# HARDWARECLOCK: set to "UTC" or "localtime" +# USEDIRECTISA: use direct I/O requests instead of /dev/rtc for hwclock +# TIMEZONE: timezones are found in /usr/share/zoneinfo +# KEYMAP: keymaps are found in /usr/share/kbd/keymaps +# CONSOLEFONT: found in /usr/share/kbd/consolefonts (only needed for non-US) +# CONSOLEMAP: found in /usr/share/kbd/consoletrans +# USECOLOR: use ANSI color sequences in startup messages +# +LOCALE="en_US.utf8" +HARDWARECLOCK="UTC" +USEDIRECTISA="no" +TIMEZONE="Europe/Berlin" +KEYMAP="de" +CONSOLEFONT= +CONSOLEMAP= +USECOLOR="yes" + +# ----------------------------------------------------------------------- +# HARDWARE +# ----------------------------------------------------------------------- +# +# MOD_AUTOLOAD: Allow autoloading of modules at boot and when needed +# MOD_BLACKLIST: Prevent udev from loading these modules +# MODULES: Modules to load at boot-up. Prefix with a ! to blacklist. +# +# NOTE: Use of 'MOD_BLACKLIST' is deprecated. Please use ! in the MODULES array. +# +MOD_AUTOLOAD="yes" +#MOD_BLACKLIST=() #deprecated +MODULES=() + +# Scan for LVM volume groups at startup, required if you use LVM +USELVM="no" + +# ----------------------------------------------------------------------- +# NETWORKING +# ----------------------------------------------------------------------- +# +# HOSTNAME: Hostname of machine. Should also be put in /etc/hosts +# +HOSTNAME="larch7-mini" + +# Use 'ifconfig -a' or 'ls /sys/class/net/' to see all available interfaces. +# +# Interfaces to start at boot-up (in this order) +# Declare each interface then list in INTERFACES +# - prefix an entry in INTERFACES with a ! to disable it +# - no hyphens in your interface names - Bash doesn't like it +# +# DHCP: Set your interface to "dhcp" (eth0="dhcp") +# Wireless: See network profiles below +# +#eth0="eth0 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255" +eth0="dhcp" +INTERFACES=(eth0) + +# Routes to start at boot-up (in this order) +# Declare each route then list in ROUTES +# - prefix an entry in ROUTES with a ! to disable it +# +gateway="default gw 192.168.0.1" +ROUTES=(!gateway) + +# Enable these network profiles at boot-up. These are only useful +# if you happen to need multiple network configurations (ie, laptop users) +# - set to 'menu' to present a menu during boot-up (dialog package required) +# - prefix an entry with a ! to disable it +# +# Network profiles are found in /etc/network.d +# +# This now requires the netcfg package +# +#NETWORKS=(main) + +# ----------------------------------------------------------------------- +# DAEMONS +# ----------------------------------------------------------------------- +# +# Daemons to start at boot-up (in this order) +# - prefix a daemon with a ! to disable it +# - prefix a daemon with a @ to start it up in the background +# +DAEMONS=(syslog-ng network crond) diff --git a/build_tools/l7/larch0/profiles/mini/rootoverlay/root/.bashrc b/build_tools/l7/larch0/profiles/mini/rootoverlay/root/.bashrc new file mode 100644 index 0000000..3e5c29c --- /dev/null +++ b/build_tools/l7/larch0/profiles/mini/rootoverlay/root/.bashrc @@ -0,0 +1,2 @@ +alias ls='ls --color=auto' +PS1='[\u@\h \W]\$ ' diff --git a/build_tools/l7/larch0/profiles/mini/rootoverlay/root/.ssh/id_rsa.pub b/build_tools/l7/larch0/profiles/mini/rootoverlay/root/.ssh/id_rsa.pub new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build_tools/l7/larch0/profiles/mini/rootoverlay/root/.ssh/id_rsa.pub diff --git a/build_tools/l7/larch0/profiles/mini/vetopacks b/build_tools/l7/larch0/profiles/mini/vetopacks new file mode 100644 index 0000000..714851c --- /dev/null +++ b/build_tools/l7/larch0/profiles/mini/vetopacks @@ -0,0 +1,3 @@ +xfsprogs +xfsdump +jfsutils diff --git a/build_tools/l7/larch0/profiles/xmaxi/addedpacks b/build_tools/l7/larch0/profiles/xmaxi/addedpacks new file mode 100644 index 0000000..29e3258 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/addedpacks @@ -0,0 +1,102 @@ +## Useful for use as installer, etc. +ntfsprogs +parted +rsync + +## generally useful tools which don't require X +openssh +sshfs +dosfstools +lynx +mc +unzip +zip + +lsof +dvd+rw-tools + +sudo + +*base-devel +pyqt +larch + +alsa-lib +alsa-oss +alsa-utils +cdparanoia +cdrdao +cups + +## Xorg packages +*xorg +xorg-xkb-utils +xorg-xauth +*xorg-input-drivers +*xorg-video-drivers + +## X apps +luser +localed +xkmap +gparted + +## Not yet fully implemented, but might still be useful +larchin + +firefox +thunderbird + +## xfce +gamin +*xfce4 +*xfce4-goodies +*gstreamer0.10-plugins + +#desktop-file-utils is required by thunar, etc. +gimp +wicd + +geany + +ttf-dejavu + +gdm + +tango-icon-theme + +#cups-pdf +gutenprint +hplip + +openntpd +cpufrequtils + +xf86-input-synaptics +gsynaptics + +*lxde + +xsane +meld + +ttf-ms-fonts + +##openoffice depends on java, but the default is openjdk6 +jre +openoffice-base + +libdvdcss +lame +flac +vorbis-tools +vlc +xine-ui +asunder + +evince +gthumb +mirage +k3b + +#scribus diff --git a/build_tools/l7/larch0/profiles/xmaxi/bootlines b/build_tools/l7/larch0/profiles/xmaxi/bootlines new file mode 100644 index 0000000..929712a --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/bootlines @@ -0,0 +1,23 @@ +# The information here will be adapted for the bootloader and inserted into its configuration +# file at the place marked '###LARCH' +# This header will be removed. +# Each block must have an empty line before and after it. +# There may be no empty lines within a block. + +comment: +title: larch boot to xfce desktop +options: + +comment: +title: larch boot to xfce desktop, with vesa xorg driver +options: nomodeset xvesa + +comment: Might be useful if there is some trouble with starting xorg +title: larch boot to console +options: nox + +comment: +title: larch with swap +options: swap + +# END OF FILE diff --git a/build_tools/l7/larch0/profiles/xmaxi/cd-root/larch/copy/actions.rc b/build_tools/l7/larch0/profiles/xmaxi/cd-root/larch/copy/actions.rc new file mode 100644 index 0000000..dd95b26 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/cd-root/larch/copy/actions.rc @@ -0,0 +1,3 @@ +type=0 +orientation=1 + diff --git a/build_tools/l7/larch0/profiles/xmaxi/cd-root/larch/copy/autologin b/build_tools/l7/larch0/profiles/xmaxi/cd-root/larch/copy/autologin new file mode 100644 index 0000000..93ca142 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/cd-root/larch/copy/autologin @@ -0,0 +1 @@ +root
\ No newline at end of file diff --git a/build_tools/l7/larch0/profiles/xmaxi/cd-root/larch/copy/bash_profile b/build_tools/l7/larch0/profiles/xmaxi/cd-root/larch/copy/bash_profile new file mode 100644 index 0000000..c49349b --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/cd-root/larch/copy/bash_profile @@ -0,0 +1 @@ +. $HOME/.bashrc diff --git a/build_tools/l7/larch0/profiles/xmaxi/cd-root/larch/copy/delarch b/build_tools/l7/larch0/profiles/xmaxi/cd-root/larch/copy/delarch new file mode 100644 index 0000000..108c1a4 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/cd-root/larch/copy/delarch @@ -0,0 +1,63 @@ +# This is a script called from the installation script fix-system2. +# Its purpose is to remove custom live-only stuff from a just-installed +# system. + +# $1 is the path to the installed system root directory. + +INSTALL=$1 +if [ -z "${INSTALL}" ] || [ ! -f /etc/rc.conf ]; then + echo "ERROR: delarch installation adjustments failed:" + echo " Please check installation mount point (${INSTALL})" + exit 1 +fi + +rm -f "${INSTALL}/root/Desktop/Install Arch Linux.desktop" +rm -f "${INSTALL}/etc/rc.d/functions.d/larch-autologin" + +if [ -f ${INSTALL}/etc/rc.local.orig ]; then + mv ${INSTALL}/etc/rc.local.orig ${INSTALL}/etc/rc.local +fi +if [ -f ${INSTALL}/etc/rc.local.shutdown.orig ]; then + mv ${INSTALL}/etc/rc.local.shutdown.orig ${INSTALL}/etc/rc.local.shutdown +fi + +# start gdm from rc.conf +sed -i '/^DAEMONS=/ s|!gdm|@gdm|' ${INSTALL}/etc/rc.conf + +#***************************************************# +# Replace uses of larchquit in xfce panels and menu.# +#***************************************************# +### Unfortunately this isn't very simple. If anyone has a better way of +### providing different Quit actions in the live version and the version +### installed to disk from it, please let me know! +### Maybe it would be better just to provide a special live quit desktop +### icon which can be removed on installation, like the installation icon. + +defaultquit='<builtin name="Quit" cmd="Quit" icon="gnome-logout"/>' + +replacequit () +{ + for f in ${INSTALL}$1/.config/xfce4/panel/*; do + if grep "^Exec=larchquit" ${f}; then + n=$( echo ${f} | sed "s|^.*-\([0-9]\+\).*|\1|" ) + cp /.livesys/actions.rc \ + ${INSTALL}$1/.config/xfce4/panel/actions-${n}.rc + rm ${f} + + sed -i "s|=\"launcher\" id=\"${n}\"|=\"actions\" id=\"${n}\"|" \ + ${INSTALL}$1/.config/xfce4/panel/panels.xml + fi + done + + if [ -f ${INSTALL}$1/.bash_profile ]; then + rm -f ${INSTALL}$1/.local/share/applications/xfce4-logout.desktop + + cp /.livesys/bash_profile ${INSTALL}$1/.bash_profile + fi +} + +for hd in $( cat ${INSTALL}/etc/passwd | cut -d':' -f6 | grep '^/home/' ) \ + /root /etc/skel; do + replacequit ${hd} &>/dev/null +done +#***************************************************# diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/X11/xinit/startx.custom b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/X11/xinit/startx.custom new file mode 100644 index 0000000..d24a70a --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/X11/xinit/startx.custom @@ -0,0 +1,18 @@ +if [ -z "$DISPLAY" ] && [ ! -f /tmp/_nox_ ] \ + && echo $(tty) | grep "tty1" &>/dev/null; then + startx + + # Maybe there should be some code here to handle a failed startx? + + # The 'return' value is at /tmp/xlogout + # If there is nothing there, switch user to 'newuser' + # If there is also nothing there, login as root + # - if already root, fall through to terminal + + if [ -f /tmp/xlogout ] || [ -f /tmp/newuser ]; then + logout + elif [ ${UID} -ne 0 ]; then + echo "root" >/tmp/newuser + logout + fi +fi diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/X11/xinit/xinitrc.custom b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/X11/xinit/xinitrc.custom new file mode 100644 index 0000000..fe443d8 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/X11/xinit/xinitrc.custom @@ -0,0 +1,10 @@ +case ${desktop} in + xfce ) exec ck-launch-session xfce4-session ;; + +# Now these are only wild guesses! + gnome ) exec ck-launch-session gnome-session ;; + + kde ) exec ck-launch-session startkde ;; + + * ) ;; +esac diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/X11/xinit/xorg.conf.set b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/X11/xinit/xorg.conf.set new file mode 100755 index 0000000..4430264 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/X11/xinit/xorg.conf.set @@ -0,0 +1,9 @@ +#!/bin/sh +if [ -f /etc/X11/xorg.conf.base ]; then + cp -f /etc/X11/xorg.conf.base /etc/X11/xorg.conf + for x in $(cat /proc/cmdline); do + [ "${x}" = "nox" ] && :> /tmp/_nox_ + [ "${x}" = "xvesa" ] && sed 's|^#xvesa||' -i /etc/X11/xorg.conf + [ "${x}" = "nodri" ] && sed 's|^#nodri||' -i /etc/X11/xorg.conf + done +fi diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/X11/xorg.conf.base b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/X11/xorg.conf.base new file mode 100644 index 0000000..f6f6c0e --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/X11/xorg.conf.base @@ -0,0 +1,44 @@ +#Section "ServerFlags" +# # This deactivates input device hotplugging +# Option "AutoAddDevices" "False" +#EndSection + +Section "InputDevice" + Identifier "Generic Keyboard" + Driver "kbd" + Option "XkbRules" "xorg" +##XKMAP+ +# Option "XkbModel" "pc101" +# Option "XkbLayout" "de" +##XKMAP- +EndSection + +Section "InputDevice" + Identifier "Configured Mouse" + Driver "mouse" +EndSection + +Section "Device" + Identifier "Configured Video Device" +#xvesa Driver "vesa" +#nodri Option "DRI" "False" +# Option "AccelMethod" "exa" +EndSection + +Section "Monitor" + Identifier "Configured Monitor" +# Option "PreferredMode" "1024x768" +# HorizSync 30.0 - 65.0 +# VertRefresh 50.0 - 75.0 +EndSection + +Section "Screen" + Identifier "Default Screen" + Monitor "Configured Monitor" +# DefaultDepth 16 +# SubSection "Display" +# Viewport 0 0 +# Depth 16 +# Modes "1024x768" "800x600" +# EndSubSection +EndSection diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/conf.d/dhcpcd b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/conf.d/dhcpcd new file mode 100644 index 0000000..ab53c30 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/conf.d/dhcpcd @@ -0,0 +1,6 @@ +# +# Arguments to be passed to the DHCP client daemon +# + +DHCPCD_ARGS="-t 10 -h $HOSTNAME" + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/gdm/custom.conf b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/gdm/custom.conf new file mode 100644 index 0000000..2748075 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/gdm/custom.conf @@ -0,0 +1,105 @@ +# GDM Custom Configuration file. +# +# This file is the appropriate place for specifying your customizations to the +# GDM configuration. If you run gdmsetup, it will automatically edit this +# file for you and will cause the daemon and any running GDM GUI programs to +# automatically update with the new configuration. Not all configuration +# options are supported by gdmsetup, so to modify some values it may be +# necessary to modify this file directly by hand. +# +# This file overrides the default configuration settings. These settings +# are stored in the GDM System Defaults configuration file, which is found +# at the following location. +# +# /usr/share/gdm/defaults.conf. +# +# This file contains comments about the meaning of each configuration option, +# so is also a useful reference. Also refer to the documentation links at +# the end of this comment for further information. In short, to hand-edit +# this file, simply add or modify the key=value combination in the +# appropriate section in the template below this comment section. +# +# For example, if you want to specify a different value for the Enable key +# in the "[debug]" section of your GDM System Defaults configuration file, +# then add "Enable=true" in the "[debug]" section of this file. If the +# key already exists in this file, then simply modify it. +# +# Older versions of GDM used the "gdm.conf" file for configuration. If your +# system has an old gdm.conf file on the system, it will be used instead of +# this file - so changes made to this file will not take effect. Consider +# migrating your configuration to this file and removing the gdm.conf file. +# +# If you hand edit a GDM configuration file, you can run the following +# command and the GDM daemon will immediately reflect the change. Any +# running GDM GUI programs will also be notified to update with the new +# configuration. +# +# gdmflexiserver --command="UPDATE_CONFIG <configuration key>" +# +# e.g, the "Enable" key in the "[debug]" section would be "debug/Enable". +# +# You can also run gdm-restart or gdm-safe-restart to cause GDM to restart and +# re-read the new configuration settings. You can also restart GDM by sending +# a HUP or USR1 signal to the daemon. HUP behaves like gdm-restart and causes +# any user session started by GDM to exit immediately while USR1 behaves like +# gdm-safe-restart and will wait until all users log out before restarting GDM. +# +# For full reference documentation see the gnome help browser under +# GNOME|System category. You can also find the docs in HTML form on +# http://www.gnome.org/projects/gdm/ +# +# NOTE: Lines that begin with "#" are considered comments. +# +# Have fun! + +[daemon] + +DefaultSession=xfce4.desktop + +Greeter=/usr/lib/gdm/gdmgreeter + +[security] + +AllowRoot=true + +[xdmcp] + +[gui] + +[greeter] + + + +Browser=true + + +GraphicalTheme=dlarch-theme-gdm + + +DefaultFace=/usr/share/pixmaps/faces/astronaut.jpg + + +MinimalUID=0 + + +SoundOnLogin=false + + +IncludeAll=true + +[chooser] + +[debug] + +# Note that to disable servers defined in the GDM System Defaults +# configuration file (such as 0=Standard, you must put a line in this file +# that says 0=inactive, as described in the Configuration section of the GDM +# documentation. +# +[servers] + +# Also note, that if you redefine a [server-foo] section, then GDM will +# use the definition in this file, not the GDM System Defaults configuration +# file. It is currently not possible to disable a [server-foo] section +# defined in the GDM System Defaults configuration file. +# diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/hosts.allow b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/hosts.allow new file mode 100644 index 0000000..f8cc8f5 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/hosts.allow @@ -0,0 +1,13 @@ +# +# /etc/hosts.allow +# + +ALL: 127.0.0.1 + +# To allow ssh in from anywhere +#sshd: ALL + +# To allow ssh in from local net (example) +#sshd: 192.168.178.0/255.255.255.0 + +# End of file diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/inittab.larch b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/inittab.larch new file mode 100644 index 0000000..51f758d --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/inittab.larch @@ -0,0 +1,42 @@ +# +# /etc/inittab +# + +# Runlevels: +# 0 Halt +# 1(S) Single-user +# 2 Not used +# 3 Multi-user +# 4 Not used +# 5 X11 +# 6 Reboot + +## Only one of the following two lines can be uncommented! +# Boot to console +id:3:initdefault: +# Boot to X11 +#id:5:initdefault: + +rc::sysinit:/etc/rc.sysinit +rs:S1:wait:/etc/rc.single +rm:2345:wait:/etc/rc.multi +rh:06:wait:/etc/rc.shutdown +su:S:wait:/sbin/sulogin -p + +# -8 options fixes umlauts problem on login +c1:2345:respawn:/sbin/agetty -8 38400 tty1 linux -n -l /usr/sbin/ulogin +c2:2345:respawn:/sbin/agetty -8 38400 tty2 linux +c3:2345:respawn:/sbin/agetty -8 38400 tty3 linux +c4:2345:respawn:/sbin/agetty -8 38400 tty4 linux +c5:2345:respawn:/sbin/agetty -8 38400 tty5 linux +c6:2345:respawn:/sbin/agetty -8 38400 tty6 linux + +ca::ctrlaltdel:/sbin/shutdown -t3 -r now + +# Example lines for starting a login manager +x:5:respawn:/usr/bin/xdm -nodaemon +#x:5:respawn:/usr/sbin/gdm -nodaemon +#x:5:respawn:/usr/bin/kdm -nodaemon +#x:5:respawn:/usr/bin/slim >& /dev/null + +# End of file diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/locale.gen b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/locale.gen new file mode 100644 index 0000000..a3276b1 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/locale.gen @@ -0,0 +1,8 @@ +# locales for larch (/etc/locale.gen) + +en_US ISO-8859-1 +en_US.UTF-8 UTF-8 +de_DE ISO-8859-1 +de_DE@euro ISO-8859-15 +de_DE.UTF-8 UTF-8 + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/rc.conf b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/rc.conf new file mode 100644 index 0000000..9edb3d0 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/rc.conf @@ -0,0 +1,92 @@ +# +# /etc/rc.conf - Main Configuration for Arch Linux +# + +# ----------------------------------------------------------------------- +# LOCALIZATION +# ----------------------------------------------------------------------- +# +# LOCALE: available languages can be listed with the 'locale -a' command +# HARDWARECLOCK: set to "UTC" or "localtime" +# USEDIRECTISA: use direct I/O requests instead of /dev/rtc for hwclock +# TIMEZONE: timezones are found in /usr/share/zoneinfo +# KEYMAP: keymaps are found in /usr/share/kbd/keymaps +# CONSOLEFONT: found in /usr/share/kbd/consolefonts (only needed for non-US) +# CONSOLEMAP: found in /usr/share/kbd/consoletrans +# USECOLOR: use ANSI color sequences in startup messages +# +LOCALE="en_US.utf8" +HARDWARECLOCK="UTC" +USEDIRECTISA="no" +TIMEZONE="Europe/Berlin" +KEYMAP="de" +CONSOLEFONT= +CONSOLEMAP= +USECOLOR="yes" + +# ----------------------------------------------------------------------- +# HARDWARE +# ----------------------------------------------------------------------- +# +# MOD_AUTOLOAD: Allow autoloading of modules at boot and when needed +# MOD_BLACKLIST: Prevent udev from loading these modules +# MODULES: Modules to load at boot-up. Prefix with a ! to blacklist. +# +# NOTE: Use of 'MOD_BLACKLIST' is deprecated. Please use ! in the MODULES array. +# +MOD_AUTOLOAD="yes" +#MOD_BLACKLIST=() #deprecated +MODULES=() + +# Scan for LVM volume groups at startup, required if you use LVM +USELVM="no" + +# ----------------------------------------------------------------------- +# NETWORKING +# ----------------------------------------------------------------------- +# +# HOSTNAME: Hostname of machine. Should also be put in /etc/hosts +# +HOSTNAME="larch7-xmini" + +# Use 'ifconfig -a' or 'ls /sys/class/net/' to see all available interfaces. +# +# Interfaces to start at boot-up (in this order) +# Declare each interface then list in INTERFACES +# - prefix an entry in INTERFACES with a ! to disable it +# - no hyphens in your interface names - Bash doesn't like it +# +# DHCP: Set your interface to "dhcp" (eth0="dhcp") +# Wireless: See network profiles below +# +#eth0="eth0 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255" +eth0="dhcp" +INTERFACES=(eth0) + +# Routes to start at boot-up (in this order) +# Declare each route then list in ROUTES +# - prefix an entry in ROUTES with a ! to disable it +# +gateway="default gw 192.168.0.1" +ROUTES=(!gateway) + +# Enable these network profiles at boot-up. These are only useful +# if you happen to need multiple network configurations (ie, laptop users) +# - set to 'menu' to present a menu during boot-up (dialog package required) +# - prefix an entry with a ! to disable it +# +# Network profiles are found in /etc/network.d +# +# This now requires the netcfg package +# +#NETWORKS=(main) + +# ----------------------------------------------------------------------- +# DAEMONS +# ----------------------------------------------------------------------- +# +# Daemons to start at boot-up (in this order) +# - prefix a daemon with a ! to disable it +# - prefix a daemon with a @ to start it up in the background +# +DAEMONS=(syslog-ng @network dbus hal !gdm @sshd !crond !wicd !cups) diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/rc.d/functions.d/larch-autologin b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/rc.d/functions.d/larch-autologin new file mode 100644 index 0000000..d1c6aa3 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/rc.d/functions.d/larch-autologin @@ -0,0 +1,7 @@ +sysinit_end_larch_autologin() { + # Set up automatically logged in user (larch live system only) + if [ -f /.livesys/autologin ]; then + cp /.livesys/autologin /tmp/newuser + fi +} +add_hook sysinit_end sysinit_end_larch_autologin diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/rc.local b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/rc.local new file mode 100755 index 0000000..47b24ef --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/rc.local @@ -0,0 +1,7 @@ +#!/bin/bash +# +# /etc/rc.local: Local multi-user startup script. +# + +# Restore saved sound volume, etc. +alsactl restore diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/rc.local.shutdown b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/rc.local.shutdown new file mode 100755 index 0000000..2b5f735 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/rc.local.shutdown @@ -0,0 +1,7 @@ +#!/bin/bash +# +# /etc/rc.local.shutdown: Local shutdown script. +# + +# Save sound volume, etc. +alsactl store diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.bash_profile b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.bash_profile new file mode 100644 index 0000000..600bd9b --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.bash_profile @@ -0,0 +1,3 @@ +. $HOME/.bashrc + +. /etc/X11/xinit/startx.custom diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.bashrc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.bashrc new file mode 100644 index 0000000..3e5c29c --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.bashrc @@ -0,0 +1,2 @@ +alias ls='ls --color=auto' +PS1='[\u@\h \W]\$ ' diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/Terminal/terminalrc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/Terminal/terminalrc new file mode 100644 index 0000000..172b4d3 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/Terminal/terminalrc @@ -0,0 +1,89 @@ +[Configuration] +AccelNewTab=<control><shift>t +AccelNewWindow=<control><shift>n +AccelDetachTab=<control><shift>d +AccelCloseTab=<control><shift>w +AccelCloseWindow=<control><shift>q +AccelCopy=<control><shift>c +AccelPaste=<control><shift>v +AccelPreferences=Disabled +AccelShowMenubar=Disabled +AccelShowToolbars=Disabled +AccelShowBorders=Disabled +AccelFullscreen=F11 +AccelSetTitle=Disabled +AccelReset=Disabled +AccelResetAndClear=Disabled +AccelPrevTab=<control>Page_Up +AccelNextTab=<control>Page_Down +AccelSwitchToTab1=<Alt>1 +AccelSwitchToTab2=<Alt>2 +AccelSwitchToTab3=<Alt>3 +AccelSwitchToTab4=<Alt>4 +AccelSwitchToTab5=<Alt>5 +AccelSwitchToTab6=<Alt>6 +AccelSwitchToTab7=<Alt>7 +AccelSwitchToTab8=<Alt>8 +AccelSwitchToTab9=<Alt>9 +AccelContents=F1 +BackgroundMode=TERMINAL_BACKGROUND_SOLID +BackgroundImageFile= +BackgroundImageStyle=TERMINAL_BACKGROUND_STYLE_TILED +BackgroundDarkness=0.500000 +BindingBackspace=TERMINAL_ERASE_BINDING_AUTO +BindingDelete=TERMINAL_ERASE_BINDING_AUTO +ColorForeground=White +ColorBackground=Black +ColorCursor=Green +ColorSelection=White +ColorSelectionUseDefault=TRUE +ColorPalette1=#000000000000 +ColorPalette2=#aaaa00000000 +ColorPalette3=#0000aaaa0000 +ColorPalette4=#aaaa55550000 +ColorPalette5=#00000000aaaa +ColorPalette6=#aaaa0000aaaa +ColorPalette7=#0000aaaaaaaa +ColorPalette8=#aaaaaaaaaaaa +ColorPalette9=#555555555555 +ColorPalette10=#ffff55555555 +ColorPalette11=#5555ffff5555 +ColorPalette12=#ffffffff5555 +ColorPalette13=#55555555ffff +ColorPalette14=#ffff5555ffff +ColorPalette15=#5555ffffffff +ColorPalette16=#ffffffffffff +CommandUpdateRecords=TRUE +CommandLoginShell=FALSE +FontAllowBold=TRUE +FontAntiAlias=TRUE +FontName=Monospace 12 +MiscAlwaysShowTabs=FALSE +MiscBell=FALSE +MiscBordersDefault=TRUE +MiscCursorBlinks=FALSE +MiscDefaultGeometry=80x24 +MiscInheritGeometry=FALSE +MiscMenubarDefault=TRUE +MiscMouseAutohide=FALSE +MiscToolbarsDefault=FALSE +MiscConfirmClose=TRUE +MiscCycleTabs=TRUE +MiscTabCloseButtons=TRUE +MiscTabPosition=GTK_POS_TOP +MiscHighlightUrls=TRUE +ScrollingBar=TERMINAL_SCROLLBAR_RIGHT +ScrollingLines=1000 +ScrollingOnOutput=TRUE +ScrollingOnKeystroke=TRUE +ScrollingSingleLine=TRUE +ShortcutsNoMenukey=TRUE +ShortcutsNoMnemonics=FALSE +TitleInitial=Terminal +TitleMode=TERMINAL_TITLE_APPEND +Term=xterm +VteWorkaroundTitleBug=TRUE +WordChars=-A-Za-z0-9,./?%&#:_~ +TabActivityColor=#afff00000000 +TabActivityTimeout=2.000000 + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/Thunar/thunarrc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/Thunar/thunarrc new file mode 100644 index 0000000..7857976 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/Thunar/thunarrc @@ -0,0 +1,36 @@ +[Configuration] +DefaultView=void +LastCompactViewZoomLevel=THUNAR_ZOOM_LEVEL_SMALLEST +LastDetailsViewColumnOrder=THUNAR_COLUMN_NAME,THUNAR_COLUMN_SIZE,THUNAR_COLUMN_TYPE,THUNAR_COLUMN_DATE_MODIFIED +LastDetailsViewColumnWidths= +LastDetailsViewFixedColumns=FALSE +LastDetailsViewVisibleColumns=THUNAR_COLUMN_DATE_MODIFIED,THUNAR_COLUMN_NAME,THUNAR_COLUMN_SIZE,THUNAR_COLUMN_TYPE +LastDetailsViewZoomLevel=THUNAR_ZOOM_LEVEL_SMALLER +LastIconViewZoomLevel=THUNAR_ZOOM_LEVEL_NORMAL +LastLocationBar=ThunarLocationButtons +LastSeparatorPosition=170 +LastShowHidden=FALSE +LastSidePane=ThunarShortcutsPane +LastSortColumn=THUNAR_COLUMN_NAME +LastSortOrder=GTK_SORT_ASCENDING +LastStatusbarVisible=TRUE +LastView=ThunarIconView +LastWindowHeight=480 +LastWindowWidth=640 +MiscVolumeManagement=FALSE +MiscCaseSensitive=FALSE +MiscDateStyle=THUNAR_DATE_STYLE_SHORT +MiscFoldersFirst=TRUE +MiscHorizontalWheelNavigates=FALSE +MiscRecursivePermissions=THUNAR_RECURSIVE_PERMISSIONS_ASK +MiscRememberGeometry=TRUE +MiscShowAboutTemplates=TRUE +MiscShowThumbnails=TRUE +MiscSingleClick=TRUE +MiscSingleClickTimeout=500 +MiscTextBesideIcons=FALSE +ShortcutsIconEmblems=TRUE +ShortcutsIconSize=THUNAR_ICON_SIZE_SMALLER +TreeIconEmblems=TRUE +TreeIconSize=THUNAR_ICON_SIZE_SMALLEST + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/autostart/xfce4-settings-helper-autostart.desktop b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/autostart/xfce4-settings-helper-autostart.desktop new file mode 100644 index 0000000..5673067 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/autostart/xfce4-settings-helper-autostart.desktop @@ -0,0 +1,3 @@ +[Desktop Entry] +Hidden=true + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/autostart/xfce4-tips-autostart.desktop b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/autostart/xfce4-tips-autostart.desktop new file mode 100644 index 0000000..5673067 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/autostart/xfce4-tips-autostart.desktop @@ -0,0 +1,3 @@ +[Desktop Entry] +Hidden=true + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/cpugraph-15.rc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/cpugraph-15.rc new file mode 100644 index 0000000..b757ec3 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/cpugraph-15.rc @@ -0,0 +1,12 @@ +UpdateInterval=2 +TimeScale=0 +Width=30 +Mode=0 +Frame=1 +AssociateCommand=xterm top +ColorMode=0 +Foreground1=#25DF25 +Foreground2=#FF0000 +Background=#FFFFFF +Foreground3=#0000FF + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/datetime-16.rc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/datetime-16.rc new file mode 100644 index 0000000..e28dc34 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/datetime-16.rc @@ -0,0 +1,6 @@ +layout=3 +date_font=Bitstream Vera Sans 8 +time_font=Bitstream Vera Sans 10 +date_format=%Y/%m/%d +time_format=%H:%M + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/launcher-10.rc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/launcher-10.rc new file mode 100644 index 0000000..f4a720b --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/launcher-10.rc @@ -0,0 +1,12 @@ +[Global] +MoveFirst=false +ArrowPosition=0 + +[Entry 0] +Name=Web Browser +Comment=Surf the internet +Icon=applications-internet +Exec=exo-open --launch WebBrowser +Terminal=false +StartupNotify=true + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/launcher-12.rc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/launcher-12.rc new file mode 100644 index 0000000..9f96989 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/launcher-12.rc @@ -0,0 +1,12 @@ +[Entry 0] +Name=Quit +Comment=Exit the current session +Icon=gnome-logout +Exec=larchquit.py xfce +Terminal=false +StartupNotify=true + +[Global] +MoveFirst=false +ArrowPosition=0 + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/launcher-13.rc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/launcher-13.rc new file mode 100644 index 0000000..3b6f70f --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/launcher-13.rc @@ -0,0 +1,12 @@ +[Global] +MoveFirst=false +ArrowPosition=0 + +[Entry 0] +Name=Mail Reader +Comment=Read and Write Mail +Icon=xfce-mail +Exec=exo-open --launch MailReader +Terminal=false +StartupNotify=true + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/launcher-18.rc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/launcher-18.rc new file mode 100644 index 0000000..e75e052 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/launcher-18.rc @@ -0,0 +1,12 @@ +[Entry 0] +Name=Document Editor +Comment=Edit your text documents +Icon=main +Exec=soffice -writer +Terminal=false +StartupNotify=true + +[Global] +MoveFirst=false +ArrowPosition=0 + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/launcher-19.rc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/launcher-19.rc new file mode 100644 index 0000000..eb1d705 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/launcher-19.rc @@ -0,0 +1,12 @@ +[Entry 0] +Name=CD/DVD Writer +Comment=Burn CDs and DVDs +Icon=xcdroast +Exec=k3b +Terminal=false +StartupNotify=true + +[Global] +MoveFirst=false +ArrowPosition=0 + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/launcher-21.rc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/launcher-21.rc new file mode 100644 index 0000000..666e475 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/launcher-21.rc @@ -0,0 +1,12 @@ +[Entry 0] +Name=Image Editor +Comment=GIMP - editor for raster images +Icon=gimp +Exec=gimp +Terminal=false +StartupNotify=false + +[Global] +MoveFirst=false +ArrowPosition=0 + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/launcher-7.rc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/launcher-7.rc new file mode 100644 index 0000000..f13d351 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/launcher-7.rc @@ -0,0 +1,12 @@ +[Entry 0] +Name=Command Prompt +Comment=X terminal emulator +Icon=xfce-terminal +Exec=exo-open --launch TerminalEmulator +Terminal=false +StartupNotify=false + +[Global] +MoveFirst=false +ArrowPosition=0 + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/launcher-8.rc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/launcher-8.rc new file mode 100644 index 0000000..dec40db --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/launcher-8.rc @@ -0,0 +1,12 @@ +[Entry 0] +Name=Editor +Comment=Edit text files +Icon=xfce-edit +Exec=mousepad +Terminal=false +StartupNotify=false + +[Global] +MoveFirst=false +ArrowPosition=0 + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/launcher-9.rc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/launcher-9.rc new file mode 100644 index 0000000..2ce2977 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/launcher-9.rc @@ -0,0 +1,12 @@ +[Entry 0] +Name=File Manager +Comment=Manage files and folders +Icon=xfce-filemanager +Exec=thunar +Terminal=false +StartupNotify=false + +[Global] +MoveFirst=false +ArrowPosition=0 + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/pager-2.rc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/pager-2.rc new file mode 100644 index 0000000..b485293 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/pager-2.rc @@ -0,0 +1,4 @@ +rows=1 +scrolling=true +show-names=false + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/panels.xml b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/panels.xml new file mode 100644 index 0000000..351ec2f --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/panels.xml @@ -0,0 +1,55 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE config SYSTEM "config.dtd"> +<panels> + <panel> + <properties> + <property name="size" value="24"/> + <property name="monitor" value="0"/> + <property name="screen-position" value="11"/> + <property name="fullwidth" value="1"/> + <property name="xoffset" value="0"/> + <property name="yoffset" value="742"/> + <property name="handlestyle" value="0"/> + <property name="autohide" value="0"/> + <property name="transparency" value="20"/> + <property name="activetrans" value="0"/> + </properties> + <items> + <item name="xfce4-menu" id="14"/> + <item name="showdesktop" id="1"/> + <item name="pager" id="2"/> + <item name="tasklist" id="3"/> + <item name="xfce4-mixer-plugin" id="17"/> + <item name="datetime" id="16"/> + <item name="cpugraph" id="15"/> + <item name="systray" id="4"/> + </items> + </panel> + <panel> + <properties> + <property name="size" value="30"/> + <property name="monitor" value="0"/> + <property name="screen-position" value="7"/> + <property name="fullwidth" value="0"/> + <property name="xoffset" value="992"/> + <property name="yoffset" value="0"/> + <property name="handlestyle" value="0"/> + <property name="autohide" value="0"/> + <property name="transparency" value="20"/> + <property name="activetrans" value="0"/> + </properties> + <items> + <item name="launcher" id="7"/> + <item name="launcher" id="8"/> + <item name="launcher" id="9"/> + <item name="launcher" id="10"/> + <item name="launcher" id="13"/> + <item name="separator" id="11"/> + <item name="launcher" id="18"/> + <item name="launcher" id="21"/> + <item name="launcher" id="19"/> + <item name="separator" id="20"/> + <item name="launcher" id="12"/> + </items> + </panel> +</panels> diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/separator-11.rc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/separator-11.rc new file mode 100644 index 0000000..962e705 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/separator-11.rc @@ -0,0 +1,4 @@ +draw-separator=1 +expand=0 +separator-type=2 + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/separator-20.rc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/separator-20.rc new file mode 100644 index 0000000..962e705 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/separator-20.rc @@ -0,0 +1,4 @@ +draw-separator=1 +expand=0 +separator-type=2 + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/systray-4.rc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/systray-4.rc new file mode 100644 index 0000000..518786c --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/systray-4.rc @@ -0,0 +1,9 @@ +show_frame=1 + +[Global] +ShowFrame=true +Rows=1 + +[Applications] +xfce4-power-manager=false + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/tasklist-3.rc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/tasklist-3.rc new file mode 100644 index 0000000..6413abc --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/tasklist-3.rc @@ -0,0 +1,8 @@ +grouping=1 +all_workspaces=false +show_label=1 +expand=true +flat_buttons=false +width=300 +show_handles=true + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/xfce4-menu-14.rc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/xfce4-menu-14.rc new file mode 100644 index 0000000..605b6b5 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/xfce4-menu-14.rc @@ -0,0 +1,7 @@ +use_default_menu=true +menu_file=/etc/xdg/menus/xfce-applications.menu +icon_file=/usr/share/pixmaps/xfce4_xicon1.png +show_menu_icons=true +button_title=Xfce +show_button_title=false + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/xfce4-mixer-plugin-17.rc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/xfce4-mixer-plugin-17.rc new file mode 100644 index 0000000..efd19ae --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/xfce4-mixer-plugin-17.rc @@ -0,0 +1,7 @@ +[mixer-plugin] +Device=default +LauncherCommand=xfce4-mixer +LauncherRunInTerminal=false +LauncherUseStartupNotification=false +MasterControl=Master,0 + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.local/share/applications/xfce4-logout.desktop b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.local/share/applications/xfce4-logout.desktop new file mode 100644 index 0000000..47d1bff --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.local/share/applications/xfce4-logout.desktop @@ -0,0 +1,75 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Encoding=UTF-8 +Exec=larchquit.py xfce +Icon=system-log-out +StartupNotify=true +Terminal=false +Categories=X-XFCE;X-Xfce-Toplevel; +OnlyShowIn=XFCE; +Name=Log Out +Name[ar]=تسجيل الخروج +Name[be]=Выйсьці +Name[ca]=Surt +Name[cs]=Odhlásit se +Name[da]=Logud +Name[de]=Abmelden +Name[el]=Αποσύνδεση +Name[en_GB]=Log Out +Name[es]=Cerrar sesión +Name[et]=Kirjuta välja +Name[eu]=Saio itxi +Name[fi]=Lopeta +Name[fr]=Déconnexion +Name[hu]=Kijelentkezés +Name[id]=Log Keluar +Name[it]=Fine sessione +Name[ja]=ログアウト +Name[ko]=종료 +Name[lv]=Atteikties +Name[nb]=Logg ut +Name[nl]=Uitloggen +Name[pa]=ਲਾਗ ਆਉਟ +Name[pl]=Wyloguj +Name[pt]=Sair +Name[pt_BR]=Sair +Name[ru]=Выйти +Name[sq]=Dilni +Name[sv]=Logga ut +Name[tr]=Çık +Name[uk]=Завершити сеанс +Name[ur]=لاگ آؤٹ +Name[zh_CN]=注销 +Comment=Log out of the Xfce Desktop +Comment[ar]=تسجيل الخروج من سطح مكتب Xfce +Comment[be]=Выхад з асяроддзя Xfce 4 +Comment[ca]=Surt de l’escriptori Xfce +Comment[cs]=Odhlásit se z prostředí Xfce +Comment[da]=Logud af Xfce-skrivebordet +Comment[de]=Von der Arbeitsumgebung abmelden +Comment[el]=Αποσυνδεθείτε από το Xfce +Comment[en_GB]=Log out of the Xfce Desktop +Comment[es]=Salir del escritorio Xfce +Comment[et]=Kirjuta Xfce-töölauast välja +Comment[eu]=Saioa itxi Xfce idazmahaiean +Comment[fi]=Kirjaudu ulos Xfce-työpöydältä +Comment[fr]=Déconnexion du bureau Xfce +Comment[hu]=Kijelentkezés az Xfce Munkakörnyezetből +Comment[id]=Log keluar Destop Xfce +Comment[it]=Fine sessione di Xfce +Comment[ja]=Xfce デスクトップからログアウトします +Comment[ko]=Xfce 4 데스크탑 종료 +Comment[lv]=Atteikties no Xfce darbavirsmas +Comment[nb]=Logg av Xfce skrivebordet +Comment[pa]=Xfce ਡੈਸਕਟਾਪ ਤੋਂ ਲਾਗ ਆਉਟ +Comment[pl]=Wyloguj się z Xfce +Comment[pt]=Sair do Ambiente Xfce +Comment[pt_BR]=Sair do Xfce +Comment[ru]=Выйти из Xfce +Comment[sq]=Dil prej Desktopit Xfce 4 +Comment[sv]=Logga ut från Xfce-skrivbordet +Comment[tr]=Xfce Masaüstünden çık +Comment[uk]=Завершити сеанс Xfce +Comment[ur]=ایکسفس ڈیسک ٹاپ سے لاگ آؤٹ کریں +Comment[zh_CN]=注销 Xfce diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.xinitrc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.xinitrc new file mode 100644 index 0000000..112e032 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.xinitrc @@ -0,0 +1,2 @@ +desktop=xfce +. /etc/X11/xinit/xinitrc.custom diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.xsession b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.xsession new file mode 100755 index 0000000..a16dc0b --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.xsession @@ -0,0 +1,10 @@ +#!/bin/sh + +# +# ~/.xsession +# +# Executed by xdm/gdm/kdm at login +# + +/bin/bash --login -i ~/.xinitrc + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.bash_profile b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.bash_profile new file mode 100644 index 0000000..600bd9b --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.bash_profile @@ -0,0 +1,3 @@ +. $HOME/.bashrc + +. /etc/X11/xinit/startx.custom diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.bashrc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.bashrc new file mode 100644 index 0000000..3e5c29c --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.bashrc @@ -0,0 +1,2 @@ +alias ls='ls --color=auto' +PS1='[\u@\h \W]\$ ' diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/Terminal/terminalrc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/Terminal/terminalrc new file mode 100644 index 0000000..172b4d3 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/Terminal/terminalrc @@ -0,0 +1,89 @@ +[Configuration] +AccelNewTab=<control><shift>t +AccelNewWindow=<control><shift>n +AccelDetachTab=<control><shift>d +AccelCloseTab=<control><shift>w +AccelCloseWindow=<control><shift>q +AccelCopy=<control><shift>c +AccelPaste=<control><shift>v +AccelPreferences=Disabled +AccelShowMenubar=Disabled +AccelShowToolbars=Disabled +AccelShowBorders=Disabled +AccelFullscreen=F11 +AccelSetTitle=Disabled +AccelReset=Disabled +AccelResetAndClear=Disabled +AccelPrevTab=<control>Page_Up +AccelNextTab=<control>Page_Down +AccelSwitchToTab1=<Alt>1 +AccelSwitchToTab2=<Alt>2 +AccelSwitchToTab3=<Alt>3 +AccelSwitchToTab4=<Alt>4 +AccelSwitchToTab5=<Alt>5 +AccelSwitchToTab6=<Alt>6 +AccelSwitchToTab7=<Alt>7 +AccelSwitchToTab8=<Alt>8 +AccelSwitchToTab9=<Alt>9 +AccelContents=F1 +BackgroundMode=TERMINAL_BACKGROUND_SOLID +BackgroundImageFile= +BackgroundImageStyle=TERMINAL_BACKGROUND_STYLE_TILED +BackgroundDarkness=0.500000 +BindingBackspace=TERMINAL_ERASE_BINDING_AUTO +BindingDelete=TERMINAL_ERASE_BINDING_AUTO +ColorForeground=White +ColorBackground=Black +ColorCursor=Green +ColorSelection=White +ColorSelectionUseDefault=TRUE +ColorPalette1=#000000000000 +ColorPalette2=#aaaa00000000 +ColorPalette3=#0000aaaa0000 +ColorPalette4=#aaaa55550000 +ColorPalette5=#00000000aaaa +ColorPalette6=#aaaa0000aaaa +ColorPalette7=#0000aaaaaaaa +ColorPalette8=#aaaaaaaaaaaa +ColorPalette9=#555555555555 +ColorPalette10=#ffff55555555 +ColorPalette11=#5555ffff5555 +ColorPalette12=#ffffffff5555 +ColorPalette13=#55555555ffff +ColorPalette14=#ffff5555ffff +ColorPalette15=#5555ffffffff +ColorPalette16=#ffffffffffff +CommandUpdateRecords=TRUE +CommandLoginShell=FALSE +FontAllowBold=TRUE +FontAntiAlias=TRUE +FontName=Monospace 12 +MiscAlwaysShowTabs=FALSE +MiscBell=FALSE +MiscBordersDefault=TRUE +MiscCursorBlinks=FALSE +MiscDefaultGeometry=80x24 +MiscInheritGeometry=FALSE +MiscMenubarDefault=TRUE +MiscMouseAutohide=FALSE +MiscToolbarsDefault=FALSE +MiscConfirmClose=TRUE +MiscCycleTabs=TRUE +MiscTabCloseButtons=TRUE +MiscTabPosition=GTK_POS_TOP +MiscHighlightUrls=TRUE +ScrollingBar=TERMINAL_SCROLLBAR_RIGHT +ScrollingLines=1000 +ScrollingOnOutput=TRUE +ScrollingOnKeystroke=TRUE +ScrollingSingleLine=TRUE +ShortcutsNoMenukey=TRUE +ShortcutsNoMnemonics=FALSE +TitleInitial=Terminal +TitleMode=TERMINAL_TITLE_APPEND +Term=xterm +VteWorkaroundTitleBug=TRUE +WordChars=-A-Za-z0-9,./?%&#:_~ +TabActivityColor=#afff00000000 +TabActivityTimeout=2.000000 + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/Thunar/thunarrc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/Thunar/thunarrc new file mode 100644 index 0000000..7857976 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/Thunar/thunarrc @@ -0,0 +1,36 @@ +[Configuration] +DefaultView=void +LastCompactViewZoomLevel=THUNAR_ZOOM_LEVEL_SMALLEST +LastDetailsViewColumnOrder=THUNAR_COLUMN_NAME,THUNAR_COLUMN_SIZE,THUNAR_COLUMN_TYPE,THUNAR_COLUMN_DATE_MODIFIED +LastDetailsViewColumnWidths= +LastDetailsViewFixedColumns=FALSE +LastDetailsViewVisibleColumns=THUNAR_COLUMN_DATE_MODIFIED,THUNAR_COLUMN_NAME,THUNAR_COLUMN_SIZE,THUNAR_COLUMN_TYPE +LastDetailsViewZoomLevel=THUNAR_ZOOM_LEVEL_SMALLER +LastIconViewZoomLevel=THUNAR_ZOOM_LEVEL_NORMAL +LastLocationBar=ThunarLocationButtons +LastSeparatorPosition=170 +LastShowHidden=FALSE +LastSidePane=ThunarShortcutsPane +LastSortColumn=THUNAR_COLUMN_NAME +LastSortOrder=GTK_SORT_ASCENDING +LastStatusbarVisible=TRUE +LastView=ThunarIconView +LastWindowHeight=480 +LastWindowWidth=640 +MiscVolumeManagement=FALSE +MiscCaseSensitive=FALSE +MiscDateStyle=THUNAR_DATE_STYLE_SHORT +MiscFoldersFirst=TRUE +MiscHorizontalWheelNavigates=FALSE +MiscRecursivePermissions=THUNAR_RECURSIVE_PERMISSIONS_ASK +MiscRememberGeometry=TRUE +MiscShowAboutTemplates=TRUE +MiscShowThumbnails=TRUE +MiscSingleClick=TRUE +MiscSingleClickTimeout=500 +MiscTextBesideIcons=FALSE +ShortcutsIconEmblems=TRUE +ShortcutsIconSize=THUNAR_ICON_SIZE_SMALLER +TreeIconEmblems=TRUE +TreeIconSize=THUNAR_ICON_SIZE_SMALLEST + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/autostart/xfce4-settings-helper-autostart.desktop b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/autostart/xfce4-settings-helper-autostart.desktop new file mode 100644 index 0000000..5673067 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/autostart/xfce4-settings-helper-autostart.desktop @@ -0,0 +1,3 @@ +[Desktop Entry] +Hidden=true + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/autostart/xfce4-tips-autostart.desktop b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/autostart/xfce4-tips-autostart.desktop new file mode 100644 index 0000000..5673067 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/autostart/xfce4-tips-autostart.desktop @@ -0,0 +1,3 @@ +[Desktop Entry] +Hidden=true + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/cpugraph-15.rc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/cpugraph-15.rc new file mode 100644 index 0000000..b757ec3 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/cpugraph-15.rc @@ -0,0 +1,12 @@ +UpdateInterval=2 +TimeScale=0 +Width=30 +Mode=0 +Frame=1 +AssociateCommand=xterm top +ColorMode=0 +Foreground1=#25DF25 +Foreground2=#FF0000 +Background=#FFFFFF +Foreground3=#0000FF + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/datetime-16.rc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/datetime-16.rc new file mode 100644 index 0000000..e28dc34 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/datetime-16.rc @@ -0,0 +1,6 @@ +layout=3 +date_font=Bitstream Vera Sans 8 +time_font=Bitstream Vera Sans 10 +date_format=%Y/%m/%d +time_format=%H:%M + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/launcher-10.rc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/launcher-10.rc new file mode 100644 index 0000000..f4a720b --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/launcher-10.rc @@ -0,0 +1,12 @@ +[Global] +MoveFirst=false +ArrowPosition=0 + +[Entry 0] +Name=Web Browser +Comment=Surf the internet +Icon=applications-internet +Exec=exo-open --launch WebBrowser +Terminal=false +StartupNotify=true + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/launcher-12.rc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/launcher-12.rc new file mode 100644 index 0000000..9f96989 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/launcher-12.rc @@ -0,0 +1,12 @@ +[Entry 0] +Name=Quit +Comment=Exit the current session +Icon=gnome-logout +Exec=larchquit.py xfce +Terminal=false +StartupNotify=true + +[Global] +MoveFirst=false +ArrowPosition=0 + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/launcher-13.rc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/launcher-13.rc new file mode 100644 index 0000000..3b6f70f --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/launcher-13.rc @@ -0,0 +1,12 @@ +[Global] +MoveFirst=false +ArrowPosition=0 + +[Entry 0] +Name=Mail Reader +Comment=Read and Write Mail +Icon=xfce-mail +Exec=exo-open --launch MailReader +Terminal=false +StartupNotify=true + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/launcher-18.rc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/launcher-18.rc new file mode 100644 index 0000000..e75e052 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/launcher-18.rc @@ -0,0 +1,12 @@ +[Entry 0] +Name=Document Editor +Comment=Edit your text documents +Icon=main +Exec=soffice -writer +Terminal=false +StartupNotify=true + +[Global] +MoveFirst=false +ArrowPosition=0 + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/launcher-19.rc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/launcher-19.rc new file mode 100644 index 0000000..eb1d705 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/launcher-19.rc @@ -0,0 +1,12 @@ +[Entry 0] +Name=CD/DVD Writer +Comment=Burn CDs and DVDs +Icon=xcdroast +Exec=k3b +Terminal=false +StartupNotify=true + +[Global] +MoveFirst=false +ArrowPosition=0 + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/launcher-21.rc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/launcher-21.rc new file mode 100644 index 0000000..666e475 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/launcher-21.rc @@ -0,0 +1,12 @@ +[Entry 0] +Name=Image Editor +Comment=GIMP - editor for raster images +Icon=gimp +Exec=gimp +Terminal=false +StartupNotify=false + +[Global] +MoveFirst=false +ArrowPosition=0 + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/launcher-7.rc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/launcher-7.rc new file mode 100644 index 0000000..f13d351 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/launcher-7.rc @@ -0,0 +1,12 @@ +[Entry 0] +Name=Command Prompt +Comment=X terminal emulator +Icon=xfce-terminal +Exec=exo-open --launch TerminalEmulator +Terminal=false +StartupNotify=false + +[Global] +MoveFirst=false +ArrowPosition=0 + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/launcher-8.rc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/launcher-8.rc new file mode 100644 index 0000000..dec40db --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/launcher-8.rc @@ -0,0 +1,12 @@ +[Entry 0] +Name=Editor +Comment=Edit text files +Icon=xfce-edit +Exec=mousepad +Terminal=false +StartupNotify=false + +[Global] +MoveFirst=false +ArrowPosition=0 + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/launcher-9.rc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/launcher-9.rc new file mode 100644 index 0000000..2ce2977 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/launcher-9.rc @@ -0,0 +1,12 @@ +[Entry 0] +Name=File Manager +Comment=Manage files and folders +Icon=xfce-filemanager +Exec=thunar +Terminal=false +StartupNotify=false + +[Global] +MoveFirst=false +ArrowPosition=0 + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/pager-2.rc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/pager-2.rc new file mode 100644 index 0000000..b485293 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/pager-2.rc @@ -0,0 +1,4 @@ +rows=1 +scrolling=true +show-names=false + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/panels.xml b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/panels.xml new file mode 100644 index 0000000..351ec2f --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/panels.xml @@ -0,0 +1,55 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE config SYSTEM "config.dtd"> +<panels> + <panel> + <properties> + <property name="size" value="24"/> + <property name="monitor" value="0"/> + <property name="screen-position" value="11"/> + <property name="fullwidth" value="1"/> + <property name="xoffset" value="0"/> + <property name="yoffset" value="742"/> + <property name="handlestyle" value="0"/> + <property name="autohide" value="0"/> + <property name="transparency" value="20"/> + <property name="activetrans" value="0"/> + </properties> + <items> + <item name="xfce4-menu" id="14"/> + <item name="showdesktop" id="1"/> + <item name="pager" id="2"/> + <item name="tasklist" id="3"/> + <item name="xfce4-mixer-plugin" id="17"/> + <item name="datetime" id="16"/> + <item name="cpugraph" id="15"/> + <item name="systray" id="4"/> + </items> + </panel> + <panel> + <properties> + <property name="size" value="30"/> + <property name="monitor" value="0"/> + <property name="screen-position" value="7"/> + <property name="fullwidth" value="0"/> + <property name="xoffset" value="992"/> + <property name="yoffset" value="0"/> + <property name="handlestyle" value="0"/> + <property name="autohide" value="0"/> + <property name="transparency" value="20"/> + <property name="activetrans" value="0"/> + </properties> + <items> + <item name="launcher" id="7"/> + <item name="launcher" id="8"/> + <item name="launcher" id="9"/> + <item name="launcher" id="10"/> + <item name="launcher" id="13"/> + <item name="separator" id="11"/> + <item name="launcher" id="18"/> + <item name="launcher" id="21"/> + <item name="launcher" id="19"/> + <item name="separator" id="20"/> + <item name="launcher" id="12"/> + </items> + </panel> +</panels> diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/separator-11.rc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/separator-11.rc new file mode 100644 index 0000000..962e705 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/separator-11.rc @@ -0,0 +1,4 @@ +draw-separator=1 +expand=0 +separator-type=2 + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/separator-20.rc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/separator-20.rc new file mode 100644 index 0000000..962e705 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/separator-20.rc @@ -0,0 +1,4 @@ +draw-separator=1 +expand=0 +separator-type=2 + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/systray-4.rc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/systray-4.rc new file mode 100644 index 0000000..518786c --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/systray-4.rc @@ -0,0 +1,9 @@ +show_frame=1 + +[Global] +ShowFrame=true +Rows=1 + +[Applications] +xfce4-power-manager=false + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/tasklist-3.rc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/tasklist-3.rc new file mode 100644 index 0000000..6413abc --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/tasklist-3.rc @@ -0,0 +1,8 @@ +grouping=1 +all_workspaces=false +show_label=1 +expand=true +flat_buttons=false +width=300 +show_handles=true + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/xfce4-menu-14.rc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/xfce4-menu-14.rc new file mode 100644 index 0000000..f532525 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/xfce4-menu-14.rc @@ -0,0 +1,7 @@ +use_default_menu=true +menu_file= +icon_file=/usr/share/pixmaps/xfce4_xicon1.png +show_menu_icons=true +button_title=Xfce Menu +show_button_title=false + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/xfce4-mixer-plugin-17.rc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/xfce4-mixer-plugin-17.rc new file mode 100644 index 0000000..efd19ae --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/xfce4-mixer-plugin-17.rc @@ -0,0 +1,7 @@ +[mixer-plugin] +Device=default +LauncherCommand=xfce4-mixer +LauncherRunInTerminal=false +LauncherUseStartupNotification=false +MasterControl=Master,0 + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.local/share/applications/xfce4-logout.desktop b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.local/share/applications/xfce4-logout.desktop new file mode 100644 index 0000000..47d1bff --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.local/share/applications/xfce4-logout.desktop @@ -0,0 +1,75 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Encoding=UTF-8 +Exec=larchquit.py xfce +Icon=system-log-out +StartupNotify=true +Terminal=false +Categories=X-XFCE;X-Xfce-Toplevel; +OnlyShowIn=XFCE; +Name=Log Out +Name[ar]=تسجيل الخروج +Name[be]=Выйсьці +Name[ca]=Surt +Name[cs]=Odhlásit se +Name[da]=Logud +Name[de]=Abmelden +Name[el]=Αποσύνδεση +Name[en_GB]=Log Out +Name[es]=Cerrar sesión +Name[et]=Kirjuta välja +Name[eu]=Saio itxi +Name[fi]=Lopeta +Name[fr]=Déconnexion +Name[hu]=Kijelentkezés +Name[id]=Log Keluar +Name[it]=Fine sessione +Name[ja]=ログアウト +Name[ko]=종료 +Name[lv]=Atteikties +Name[nb]=Logg ut +Name[nl]=Uitloggen +Name[pa]=ਲਾਗ ਆਉਟ +Name[pl]=Wyloguj +Name[pt]=Sair +Name[pt_BR]=Sair +Name[ru]=Выйти +Name[sq]=Dilni +Name[sv]=Logga ut +Name[tr]=Çık +Name[uk]=Завершити сеанс +Name[ur]=لاگ آؤٹ +Name[zh_CN]=注销 +Comment=Log out of the Xfce Desktop +Comment[ar]=تسجيل الخروج من سطح مكتب Xfce +Comment[be]=Выхад з асяроддзя Xfce 4 +Comment[ca]=Surt de l’escriptori Xfce +Comment[cs]=Odhlásit se z prostředí Xfce +Comment[da]=Logud af Xfce-skrivebordet +Comment[de]=Von der Arbeitsumgebung abmelden +Comment[el]=Αποσυνδεθείτε από το Xfce +Comment[en_GB]=Log out of the Xfce Desktop +Comment[es]=Salir del escritorio Xfce +Comment[et]=Kirjuta Xfce-töölauast välja +Comment[eu]=Saioa itxi Xfce idazmahaiean +Comment[fi]=Kirjaudu ulos Xfce-työpöydältä +Comment[fr]=Déconnexion du bureau Xfce +Comment[hu]=Kijelentkezés az Xfce Munkakörnyezetből +Comment[id]=Log keluar Destop Xfce +Comment[it]=Fine sessione di Xfce +Comment[ja]=Xfce デスクトップからログアウトします +Comment[ko]=Xfce 4 데스크탑 종료 +Comment[lv]=Atteikties no Xfce darbavirsmas +Comment[nb]=Logg av Xfce skrivebordet +Comment[pa]=Xfce ਡੈਸਕਟਾਪ ਤੋਂ ਲਾਗ ਆਉਟ +Comment[pl]=Wyloguj się z Xfce +Comment[pt]=Sair do Ambiente Xfce +Comment[pt_BR]=Sair do Xfce +Comment[ru]=Выйти из Xfce +Comment[sq]=Dil prej Desktopit Xfce 4 +Comment[sv]=Logga ut från Xfce-skrivbordet +Comment[tr]=Xfce Masaüstünden çık +Comment[uk]=Завершити сеанс Xfce +Comment[ur]=ایکسفس ڈیسک ٹاپ سے لاگ آؤٹ کریں +Comment[zh_CN]=注销 Xfce diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.ssh/id_rsa.pub b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.ssh/id_rsa.pub new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.ssh/id_rsa.pub diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.xinitrc b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.xinitrc new file mode 100644 index 0000000..112e032 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.xinitrc @@ -0,0 +1,2 @@ +desktop=xfce +. /etc/X11/xinit/xinitrc.custom diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.xsession b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.xsession new file mode 100755 index 0000000..a16dc0b --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.xsession @@ -0,0 +1,10 @@ +#!/bin/sh + +# +# ~/.xsession +# +# Executed by xdm/gdm/kdm at login +# + +/bin/bash --login -i ~/.xinitrc + diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/Desktop/Install Arch Linux.desktop b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/Desktop/Install Arch Linux.desktop new file mode 100644 index 0000000..4f8bb8d --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/Desktop/Install Arch Linux.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Application +Name=Install Arch Linux +Comment=larchin, the larch / Arch installer +Categories=Application; +Exec=larchin +Icon=larchin +Terminal=false +StartupNotify=true +GenericName= diff --git a/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/Desktop/Larch Documentation.desktop b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/Desktop/Larch Documentation.desktop new file mode 100644 index 0000000..ba0baac --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/Desktop/Larch Documentation.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Application +Name=Larch Documentation +Comment= +Categories=Application; +Exec=xdg-open file:///opt/apps/larch/docs/html/index.html +Icon=larch +Terminal=false +StartupNotify=true diff --git a/build_tools/l7/larch0/profiles/xmaxi/vetopacks b/build_tools/l7/larch0/profiles/xmaxi/vetopacks new file mode 100644 index 0000000..1b2fb30 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmaxi/vetopacks @@ -0,0 +1,10 @@ +##xorg +xterm +xorg-twm +xorg-fonts-75dpi +xorg-fonts-100dpi +xorg-docs +xorg-res-utils + +##xfce4-goodies +xfce4-xfapplet-plugin diff --git a/build_tools/l7/larch0/profiles/xmini/addedpacks b/build_tools/l7/larch0/profiles/xmini/addedpacks new file mode 100644 index 0000000..7c599c1 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/addedpacks @@ -0,0 +1,80 @@ +## Useful for use as installer, etc. +ntfsprogs +parted +rsync + +## generally useful tools which don't require X +openssh +sshfs +dosfstools +lynx +mc +unzip +zip + +lsof +dvd+rw-tools + +sudo + +*base-devel +pyqt +larch + +alsa-lib +alsa-oss +alsa-utils +cdparanoia +cdrdao +cups + +## Xorg packages +*xorg +xorg-xkb-utils +xorg-xauth +*xorg-input-drivers +*xorg-video-drivers + +## X apps +luser +localed +xkmap +gparted + +## Not yet fully implemented, but might still be useful +larchin + +firefox +thunderbird + +## xfce +gamin +*xfce4 +thunar-volman +thunar-archive-plugin +xfce4-systemload-plugin +xfce4-cpugraph-plugin +xfce4-screenshooter +xfce4-fsguard-plugin +xfce4-datetime-plugin +xfce4-mount-plugin +xfce4-cpufreq-plugin +xfce4-diskperf-plugin +xfce4-mount-plugin +xfce4-power-manager +xfce4-sensors-plugin +xfce4-xkb-plugin +gstreamer0.10-good-plugins +xfburn + +#desktop-file-utils is required by thunar, etc. +gimp +wicd + +geany + +ttf-dejavu + +gdm + +tango-icon-theme diff --git a/build_tools/l7/larch0/profiles/xmini/bootlines b/build_tools/l7/larch0/profiles/xmini/bootlines new file mode 100644 index 0000000..929712a --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/bootlines @@ -0,0 +1,23 @@ +# The information here will be adapted for the bootloader and inserted into its configuration +# file at the place marked '###LARCH' +# This header will be removed. +# Each block must have an empty line before and after it. +# There may be no empty lines within a block. + +comment: +title: larch boot to xfce desktop +options: + +comment: +title: larch boot to xfce desktop, with vesa xorg driver +options: nomodeset xvesa + +comment: Might be useful if there is some trouble with starting xorg +title: larch boot to console +options: nox + +comment: +title: larch with swap +options: swap + +# END OF FILE diff --git a/build_tools/l7/larch0/profiles/xmini/cd-root/larch/copy/actions.rc b/build_tools/l7/larch0/profiles/xmini/cd-root/larch/copy/actions.rc new file mode 100644 index 0000000..dd95b26 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/cd-root/larch/copy/actions.rc @@ -0,0 +1,3 @@ +type=0 +orientation=1 + diff --git a/build_tools/l7/larch0/profiles/xmini/cd-root/larch/copy/autologin b/build_tools/l7/larch0/profiles/xmini/cd-root/larch/copy/autologin new file mode 100644 index 0000000..93ca142 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/cd-root/larch/copy/autologin @@ -0,0 +1 @@ +root
\ No newline at end of file diff --git a/build_tools/l7/larch0/profiles/xmini/cd-root/larch/copy/bash_profile b/build_tools/l7/larch0/profiles/xmini/cd-root/larch/copy/bash_profile new file mode 100644 index 0000000..c49349b --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/cd-root/larch/copy/bash_profile @@ -0,0 +1 @@ +. $HOME/.bashrc diff --git a/build_tools/l7/larch0/profiles/xmini/cd-root/larch/copy/delarch b/build_tools/l7/larch0/profiles/xmini/cd-root/larch/copy/delarch new file mode 100644 index 0000000..108c1a4 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/cd-root/larch/copy/delarch @@ -0,0 +1,63 @@ +# This is a script called from the installation script fix-system2. +# Its purpose is to remove custom live-only stuff from a just-installed +# system. + +# $1 is the path to the installed system root directory. + +INSTALL=$1 +if [ -z "${INSTALL}" ] || [ ! -f /etc/rc.conf ]; then + echo "ERROR: delarch installation adjustments failed:" + echo " Please check installation mount point (${INSTALL})" + exit 1 +fi + +rm -f "${INSTALL}/root/Desktop/Install Arch Linux.desktop" +rm -f "${INSTALL}/etc/rc.d/functions.d/larch-autologin" + +if [ -f ${INSTALL}/etc/rc.local.orig ]; then + mv ${INSTALL}/etc/rc.local.orig ${INSTALL}/etc/rc.local +fi +if [ -f ${INSTALL}/etc/rc.local.shutdown.orig ]; then + mv ${INSTALL}/etc/rc.local.shutdown.orig ${INSTALL}/etc/rc.local.shutdown +fi + +# start gdm from rc.conf +sed -i '/^DAEMONS=/ s|!gdm|@gdm|' ${INSTALL}/etc/rc.conf + +#***************************************************# +# Replace uses of larchquit in xfce panels and menu.# +#***************************************************# +### Unfortunately this isn't very simple. If anyone has a better way of +### providing different Quit actions in the live version and the version +### installed to disk from it, please let me know! +### Maybe it would be better just to provide a special live quit desktop +### icon which can be removed on installation, like the installation icon. + +defaultquit='<builtin name="Quit" cmd="Quit" icon="gnome-logout"/>' + +replacequit () +{ + for f in ${INSTALL}$1/.config/xfce4/panel/*; do + if grep "^Exec=larchquit" ${f}; then + n=$( echo ${f} | sed "s|^.*-\([0-9]\+\).*|\1|" ) + cp /.livesys/actions.rc \ + ${INSTALL}$1/.config/xfce4/panel/actions-${n}.rc + rm ${f} + + sed -i "s|=\"launcher\" id=\"${n}\"|=\"actions\" id=\"${n}\"|" \ + ${INSTALL}$1/.config/xfce4/panel/panels.xml + fi + done + + if [ -f ${INSTALL}$1/.bash_profile ]; then + rm -f ${INSTALL}$1/.local/share/applications/xfce4-logout.desktop + + cp /.livesys/bash_profile ${INSTALL}$1/.bash_profile + fi +} + +for hd in $( cat ${INSTALL}/etc/passwd | cut -d':' -f6 | grep '^/home/' ) \ + /root /etc/skel; do + replacequit ${hd} &>/dev/null +done +#***************************************************# diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/X11/xinit/startx.custom b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/X11/xinit/startx.custom new file mode 100644 index 0000000..d24a70a --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/X11/xinit/startx.custom @@ -0,0 +1,18 @@ +if [ -z "$DISPLAY" ] && [ ! -f /tmp/_nox_ ] \ + && echo $(tty) | grep "tty1" &>/dev/null; then + startx + + # Maybe there should be some code here to handle a failed startx? + + # The 'return' value is at /tmp/xlogout + # If there is nothing there, switch user to 'newuser' + # If there is also nothing there, login as root + # - if already root, fall through to terminal + + if [ -f /tmp/xlogout ] || [ -f /tmp/newuser ]; then + logout + elif [ ${UID} -ne 0 ]; then + echo "root" >/tmp/newuser + logout + fi +fi diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/X11/xinit/xinitrc.custom b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/X11/xinit/xinitrc.custom new file mode 100644 index 0000000..fe443d8 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/X11/xinit/xinitrc.custom @@ -0,0 +1,10 @@ +case ${desktop} in + xfce ) exec ck-launch-session xfce4-session ;; + +# Now these are only wild guesses! + gnome ) exec ck-launch-session gnome-session ;; + + kde ) exec ck-launch-session startkde ;; + + * ) ;; +esac diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/X11/xinit/xorg.conf.set b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/X11/xinit/xorg.conf.set new file mode 100755 index 0000000..4430264 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/X11/xinit/xorg.conf.set @@ -0,0 +1,9 @@ +#!/bin/sh +if [ -f /etc/X11/xorg.conf.base ]; then + cp -f /etc/X11/xorg.conf.base /etc/X11/xorg.conf + for x in $(cat /proc/cmdline); do + [ "${x}" = "nox" ] && :> /tmp/_nox_ + [ "${x}" = "xvesa" ] && sed 's|^#xvesa||' -i /etc/X11/xorg.conf + [ "${x}" = "nodri" ] && sed 's|^#nodri||' -i /etc/X11/xorg.conf + done +fi diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/X11/xorg.conf.base b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/X11/xorg.conf.base new file mode 100644 index 0000000..f6f6c0e --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/X11/xorg.conf.base @@ -0,0 +1,44 @@ +#Section "ServerFlags" +# # This deactivates input device hotplugging +# Option "AutoAddDevices" "False" +#EndSection + +Section "InputDevice" + Identifier "Generic Keyboard" + Driver "kbd" + Option "XkbRules" "xorg" +##XKMAP+ +# Option "XkbModel" "pc101" +# Option "XkbLayout" "de" +##XKMAP- +EndSection + +Section "InputDevice" + Identifier "Configured Mouse" + Driver "mouse" +EndSection + +Section "Device" + Identifier "Configured Video Device" +#xvesa Driver "vesa" +#nodri Option "DRI" "False" +# Option "AccelMethod" "exa" +EndSection + +Section "Monitor" + Identifier "Configured Monitor" +# Option "PreferredMode" "1024x768" +# HorizSync 30.0 - 65.0 +# VertRefresh 50.0 - 75.0 +EndSection + +Section "Screen" + Identifier "Default Screen" + Monitor "Configured Monitor" +# DefaultDepth 16 +# SubSection "Display" +# Viewport 0 0 +# Depth 16 +# Modes "1024x768" "800x600" +# EndSubSection +EndSection diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/conf.d/dhcpcd b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/conf.d/dhcpcd new file mode 100644 index 0000000..ab53c30 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/conf.d/dhcpcd @@ -0,0 +1,6 @@ +# +# Arguments to be passed to the DHCP client daemon +# + +DHCPCD_ARGS="-t 10 -h $HOSTNAME" + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/gdm/custom.conf b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/gdm/custom.conf new file mode 100644 index 0000000..2748075 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/gdm/custom.conf @@ -0,0 +1,105 @@ +# GDM Custom Configuration file. +# +# This file is the appropriate place for specifying your customizations to the +# GDM configuration. If you run gdmsetup, it will automatically edit this +# file for you and will cause the daemon and any running GDM GUI programs to +# automatically update with the new configuration. Not all configuration +# options are supported by gdmsetup, so to modify some values it may be +# necessary to modify this file directly by hand. +# +# This file overrides the default configuration settings. These settings +# are stored in the GDM System Defaults configuration file, which is found +# at the following location. +# +# /usr/share/gdm/defaults.conf. +# +# This file contains comments about the meaning of each configuration option, +# so is also a useful reference. Also refer to the documentation links at +# the end of this comment for further information. In short, to hand-edit +# this file, simply add or modify the key=value combination in the +# appropriate section in the template below this comment section. +# +# For example, if you want to specify a different value for the Enable key +# in the "[debug]" section of your GDM System Defaults configuration file, +# then add "Enable=true" in the "[debug]" section of this file. If the +# key already exists in this file, then simply modify it. +# +# Older versions of GDM used the "gdm.conf" file for configuration. If your +# system has an old gdm.conf file on the system, it will be used instead of +# this file - so changes made to this file will not take effect. Consider +# migrating your configuration to this file and removing the gdm.conf file. +# +# If you hand edit a GDM configuration file, you can run the following +# command and the GDM daemon will immediately reflect the change. Any +# running GDM GUI programs will also be notified to update with the new +# configuration. +# +# gdmflexiserver --command="UPDATE_CONFIG <configuration key>" +# +# e.g, the "Enable" key in the "[debug]" section would be "debug/Enable". +# +# You can also run gdm-restart or gdm-safe-restart to cause GDM to restart and +# re-read the new configuration settings. You can also restart GDM by sending +# a HUP or USR1 signal to the daemon. HUP behaves like gdm-restart and causes +# any user session started by GDM to exit immediately while USR1 behaves like +# gdm-safe-restart and will wait until all users log out before restarting GDM. +# +# For full reference documentation see the gnome help browser under +# GNOME|System category. You can also find the docs in HTML form on +# http://www.gnome.org/projects/gdm/ +# +# NOTE: Lines that begin with "#" are considered comments. +# +# Have fun! + +[daemon] + +DefaultSession=xfce4.desktop + +Greeter=/usr/lib/gdm/gdmgreeter + +[security] + +AllowRoot=true + +[xdmcp] + +[gui] + +[greeter] + + + +Browser=true + + +GraphicalTheme=dlarch-theme-gdm + + +DefaultFace=/usr/share/pixmaps/faces/astronaut.jpg + + +MinimalUID=0 + + +SoundOnLogin=false + + +IncludeAll=true + +[chooser] + +[debug] + +# Note that to disable servers defined in the GDM System Defaults +# configuration file (such as 0=Standard, you must put a line in this file +# that says 0=inactive, as described in the Configuration section of the GDM +# documentation. +# +[servers] + +# Also note, that if you redefine a [server-foo] section, then GDM will +# use the definition in this file, not the GDM System Defaults configuration +# file. It is currently not possible to disable a [server-foo] section +# defined in the GDM System Defaults configuration file. +# diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/hosts.allow b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/hosts.allow new file mode 100644 index 0000000..f8cc8f5 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/hosts.allow @@ -0,0 +1,13 @@ +# +# /etc/hosts.allow +# + +ALL: 127.0.0.1 + +# To allow ssh in from anywhere +#sshd: ALL + +# To allow ssh in from local net (example) +#sshd: 192.168.178.0/255.255.255.0 + +# End of file diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/inittab.larch b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/inittab.larch new file mode 100644 index 0000000..51f758d --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/inittab.larch @@ -0,0 +1,42 @@ +# +# /etc/inittab +# + +# Runlevels: +# 0 Halt +# 1(S) Single-user +# 2 Not used +# 3 Multi-user +# 4 Not used +# 5 X11 +# 6 Reboot + +## Only one of the following two lines can be uncommented! +# Boot to console +id:3:initdefault: +# Boot to X11 +#id:5:initdefault: + +rc::sysinit:/etc/rc.sysinit +rs:S1:wait:/etc/rc.single +rm:2345:wait:/etc/rc.multi +rh:06:wait:/etc/rc.shutdown +su:S:wait:/sbin/sulogin -p + +# -8 options fixes umlauts problem on login +c1:2345:respawn:/sbin/agetty -8 38400 tty1 linux -n -l /usr/sbin/ulogin +c2:2345:respawn:/sbin/agetty -8 38400 tty2 linux +c3:2345:respawn:/sbin/agetty -8 38400 tty3 linux +c4:2345:respawn:/sbin/agetty -8 38400 tty4 linux +c5:2345:respawn:/sbin/agetty -8 38400 tty5 linux +c6:2345:respawn:/sbin/agetty -8 38400 tty6 linux + +ca::ctrlaltdel:/sbin/shutdown -t3 -r now + +# Example lines for starting a login manager +x:5:respawn:/usr/bin/xdm -nodaemon +#x:5:respawn:/usr/sbin/gdm -nodaemon +#x:5:respawn:/usr/bin/kdm -nodaemon +#x:5:respawn:/usr/bin/slim >& /dev/null + +# End of file diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/locale.gen b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/locale.gen new file mode 100644 index 0000000..a3276b1 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/locale.gen @@ -0,0 +1,8 @@ +# locales for larch (/etc/locale.gen) + +en_US ISO-8859-1 +en_US.UTF-8 UTF-8 +de_DE ISO-8859-1 +de_DE@euro ISO-8859-15 +de_DE.UTF-8 UTF-8 + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/rc.conf b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/rc.conf new file mode 100644 index 0000000..9edb3d0 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/rc.conf @@ -0,0 +1,92 @@ +# +# /etc/rc.conf - Main Configuration for Arch Linux +# + +# ----------------------------------------------------------------------- +# LOCALIZATION +# ----------------------------------------------------------------------- +# +# LOCALE: available languages can be listed with the 'locale -a' command +# HARDWARECLOCK: set to "UTC" or "localtime" +# USEDIRECTISA: use direct I/O requests instead of /dev/rtc for hwclock +# TIMEZONE: timezones are found in /usr/share/zoneinfo +# KEYMAP: keymaps are found in /usr/share/kbd/keymaps +# CONSOLEFONT: found in /usr/share/kbd/consolefonts (only needed for non-US) +# CONSOLEMAP: found in /usr/share/kbd/consoletrans +# USECOLOR: use ANSI color sequences in startup messages +# +LOCALE="en_US.utf8" +HARDWARECLOCK="UTC" +USEDIRECTISA="no" +TIMEZONE="Europe/Berlin" +KEYMAP="de" +CONSOLEFONT= +CONSOLEMAP= +USECOLOR="yes" + +# ----------------------------------------------------------------------- +# HARDWARE +# ----------------------------------------------------------------------- +# +# MOD_AUTOLOAD: Allow autoloading of modules at boot and when needed +# MOD_BLACKLIST: Prevent udev from loading these modules +# MODULES: Modules to load at boot-up. Prefix with a ! to blacklist. +# +# NOTE: Use of 'MOD_BLACKLIST' is deprecated. Please use ! in the MODULES array. +# +MOD_AUTOLOAD="yes" +#MOD_BLACKLIST=() #deprecated +MODULES=() + +# Scan for LVM volume groups at startup, required if you use LVM +USELVM="no" + +# ----------------------------------------------------------------------- +# NETWORKING +# ----------------------------------------------------------------------- +# +# HOSTNAME: Hostname of machine. Should also be put in /etc/hosts +# +HOSTNAME="larch7-xmini" + +# Use 'ifconfig -a' or 'ls /sys/class/net/' to see all available interfaces. +# +# Interfaces to start at boot-up (in this order) +# Declare each interface then list in INTERFACES +# - prefix an entry in INTERFACES with a ! to disable it +# - no hyphens in your interface names - Bash doesn't like it +# +# DHCP: Set your interface to "dhcp" (eth0="dhcp") +# Wireless: See network profiles below +# +#eth0="eth0 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255" +eth0="dhcp" +INTERFACES=(eth0) + +# Routes to start at boot-up (in this order) +# Declare each route then list in ROUTES +# - prefix an entry in ROUTES with a ! to disable it +# +gateway="default gw 192.168.0.1" +ROUTES=(!gateway) + +# Enable these network profiles at boot-up. These are only useful +# if you happen to need multiple network configurations (ie, laptop users) +# - set to 'menu' to present a menu during boot-up (dialog package required) +# - prefix an entry with a ! to disable it +# +# Network profiles are found in /etc/network.d +# +# This now requires the netcfg package +# +#NETWORKS=(main) + +# ----------------------------------------------------------------------- +# DAEMONS +# ----------------------------------------------------------------------- +# +# Daemons to start at boot-up (in this order) +# - prefix a daemon with a ! to disable it +# - prefix a daemon with a @ to start it up in the background +# +DAEMONS=(syslog-ng @network dbus hal !gdm @sshd !crond !wicd !cups) diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/rc.d/functions.d/larch-autologin b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/rc.d/functions.d/larch-autologin new file mode 100644 index 0000000..d1c6aa3 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/rc.d/functions.d/larch-autologin @@ -0,0 +1,7 @@ +sysinit_end_larch_autologin() { + # Set up automatically logged in user (larch live system only) + if [ -f /.livesys/autologin ]; then + cp /.livesys/autologin /tmp/newuser + fi +} +add_hook sysinit_end sysinit_end_larch_autologin diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/rc.local b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/rc.local new file mode 100755 index 0000000..513c0ba --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/rc.local @@ -0,0 +1,8 @@ +#!/bin/bash +# +# /etc/rc.local: Local multi-user startup script. +# + + +# Restore saved sound volume, etc. +alsactl restore diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/rc.local.shutdown b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/rc.local.shutdown new file mode 100755 index 0000000..2b5f735 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/rc.local.shutdown @@ -0,0 +1,7 @@ +#!/bin/bash +# +# /etc/rc.local.shutdown: Local shutdown script. +# + +# Save sound volume, etc. +alsactl store diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.bash_profile b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.bash_profile new file mode 100644 index 0000000..600bd9b --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.bash_profile @@ -0,0 +1,3 @@ +. $HOME/.bashrc + +. /etc/X11/xinit/startx.custom diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.bashrc b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.bashrc new file mode 100644 index 0000000..3e5c29c --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.bashrc @@ -0,0 +1,2 @@ +alias ls='ls --color=auto' +PS1='[\u@\h \W]\$ ' diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/Terminal/terminalrc b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/Terminal/terminalrc new file mode 100644 index 0000000..172b4d3 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/Terminal/terminalrc @@ -0,0 +1,89 @@ +[Configuration] +AccelNewTab=<control><shift>t +AccelNewWindow=<control><shift>n +AccelDetachTab=<control><shift>d +AccelCloseTab=<control><shift>w +AccelCloseWindow=<control><shift>q +AccelCopy=<control><shift>c +AccelPaste=<control><shift>v +AccelPreferences=Disabled +AccelShowMenubar=Disabled +AccelShowToolbars=Disabled +AccelShowBorders=Disabled +AccelFullscreen=F11 +AccelSetTitle=Disabled +AccelReset=Disabled +AccelResetAndClear=Disabled +AccelPrevTab=<control>Page_Up +AccelNextTab=<control>Page_Down +AccelSwitchToTab1=<Alt>1 +AccelSwitchToTab2=<Alt>2 +AccelSwitchToTab3=<Alt>3 +AccelSwitchToTab4=<Alt>4 +AccelSwitchToTab5=<Alt>5 +AccelSwitchToTab6=<Alt>6 +AccelSwitchToTab7=<Alt>7 +AccelSwitchToTab8=<Alt>8 +AccelSwitchToTab9=<Alt>9 +AccelContents=F1 +BackgroundMode=TERMINAL_BACKGROUND_SOLID +BackgroundImageFile= +BackgroundImageStyle=TERMINAL_BACKGROUND_STYLE_TILED +BackgroundDarkness=0.500000 +BindingBackspace=TERMINAL_ERASE_BINDING_AUTO +BindingDelete=TERMINAL_ERASE_BINDING_AUTO +ColorForeground=White +ColorBackground=Black +ColorCursor=Green +ColorSelection=White +ColorSelectionUseDefault=TRUE +ColorPalette1=#000000000000 +ColorPalette2=#aaaa00000000 +ColorPalette3=#0000aaaa0000 +ColorPalette4=#aaaa55550000 +ColorPalette5=#00000000aaaa +ColorPalette6=#aaaa0000aaaa +ColorPalette7=#0000aaaaaaaa +ColorPalette8=#aaaaaaaaaaaa +ColorPalette9=#555555555555 +ColorPalette10=#ffff55555555 +ColorPalette11=#5555ffff5555 +ColorPalette12=#ffffffff5555 +ColorPalette13=#55555555ffff +ColorPalette14=#ffff5555ffff +ColorPalette15=#5555ffffffff +ColorPalette16=#ffffffffffff +CommandUpdateRecords=TRUE +CommandLoginShell=FALSE +FontAllowBold=TRUE +FontAntiAlias=TRUE +FontName=Monospace 12 +MiscAlwaysShowTabs=FALSE +MiscBell=FALSE +MiscBordersDefault=TRUE +MiscCursorBlinks=FALSE +MiscDefaultGeometry=80x24 +MiscInheritGeometry=FALSE +MiscMenubarDefault=TRUE +MiscMouseAutohide=FALSE +MiscToolbarsDefault=FALSE +MiscConfirmClose=TRUE +MiscCycleTabs=TRUE +MiscTabCloseButtons=TRUE +MiscTabPosition=GTK_POS_TOP +MiscHighlightUrls=TRUE +ScrollingBar=TERMINAL_SCROLLBAR_RIGHT +ScrollingLines=1000 +ScrollingOnOutput=TRUE +ScrollingOnKeystroke=TRUE +ScrollingSingleLine=TRUE +ShortcutsNoMenukey=TRUE +ShortcutsNoMnemonics=FALSE +TitleInitial=Terminal +TitleMode=TERMINAL_TITLE_APPEND +Term=xterm +VteWorkaroundTitleBug=TRUE +WordChars=-A-Za-z0-9,./?%&#:_~ +TabActivityColor=#afff00000000 +TabActivityTimeout=2.000000 + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/Thunar/thunarrc b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/Thunar/thunarrc new file mode 100644 index 0000000..7857976 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/Thunar/thunarrc @@ -0,0 +1,36 @@ +[Configuration] +DefaultView=void +LastCompactViewZoomLevel=THUNAR_ZOOM_LEVEL_SMALLEST +LastDetailsViewColumnOrder=THUNAR_COLUMN_NAME,THUNAR_COLUMN_SIZE,THUNAR_COLUMN_TYPE,THUNAR_COLUMN_DATE_MODIFIED +LastDetailsViewColumnWidths= +LastDetailsViewFixedColumns=FALSE +LastDetailsViewVisibleColumns=THUNAR_COLUMN_DATE_MODIFIED,THUNAR_COLUMN_NAME,THUNAR_COLUMN_SIZE,THUNAR_COLUMN_TYPE +LastDetailsViewZoomLevel=THUNAR_ZOOM_LEVEL_SMALLER +LastIconViewZoomLevel=THUNAR_ZOOM_LEVEL_NORMAL +LastLocationBar=ThunarLocationButtons +LastSeparatorPosition=170 +LastShowHidden=FALSE +LastSidePane=ThunarShortcutsPane +LastSortColumn=THUNAR_COLUMN_NAME +LastSortOrder=GTK_SORT_ASCENDING +LastStatusbarVisible=TRUE +LastView=ThunarIconView +LastWindowHeight=480 +LastWindowWidth=640 +MiscVolumeManagement=FALSE +MiscCaseSensitive=FALSE +MiscDateStyle=THUNAR_DATE_STYLE_SHORT +MiscFoldersFirst=TRUE +MiscHorizontalWheelNavigates=FALSE +MiscRecursivePermissions=THUNAR_RECURSIVE_PERMISSIONS_ASK +MiscRememberGeometry=TRUE +MiscShowAboutTemplates=TRUE +MiscShowThumbnails=TRUE +MiscSingleClick=TRUE +MiscSingleClickTimeout=500 +MiscTextBesideIcons=FALSE +ShortcutsIconEmblems=TRUE +ShortcutsIconSize=THUNAR_ICON_SIZE_SMALLER +TreeIconEmblems=TRUE +TreeIconSize=THUNAR_ICON_SIZE_SMALLEST + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/autostart/xfce4-settings-helper-autostart.desktop b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/autostart/xfce4-settings-helper-autostart.desktop new file mode 100644 index 0000000..5673067 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/autostart/xfce4-settings-helper-autostart.desktop @@ -0,0 +1,3 @@ +[Desktop Entry] +Hidden=true + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/autostart/xfce4-tips-autostart.desktop b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/autostart/xfce4-tips-autostart.desktop new file mode 100644 index 0000000..5673067 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/autostart/xfce4-tips-autostart.desktop @@ -0,0 +1,3 @@ +[Desktop Entry] +Hidden=true + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/cpugraph-15.rc b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/cpugraph-15.rc new file mode 100644 index 0000000..b757ec3 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/cpugraph-15.rc @@ -0,0 +1,12 @@ +UpdateInterval=2 +TimeScale=0 +Width=30 +Mode=0 +Frame=1 +AssociateCommand=xterm top +ColorMode=0 +Foreground1=#25DF25 +Foreground2=#FF0000 +Background=#FFFFFF +Foreground3=#0000FF + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/datetime-16.rc b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/datetime-16.rc new file mode 100644 index 0000000..e28dc34 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/datetime-16.rc @@ -0,0 +1,6 @@ +layout=3 +date_font=Bitstream Vera Sans 8 +time_font=Bitstream Vera Sans 10 +date_format=%Y/%m/%d +time_format=%H:%M + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/launcher-10.rc b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/launcher-10.rc new file mode 100644 index 0000000..46f8060 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/launcher-10.rc @@ -0,0 +1,12 @@ +[Global] +MoveFirst=false +ArrowPosition=0 + +[Entry 0] +Name=Web Browser +Comment=Surf the internet +Icon=web-browser +Exec=exo-open --launch WebBrowser +Terminal=false +StartupNotify=false + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/launcher-12.rc b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/launcher-12.rc new file mode 100644 index 0000000..a821f3a --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/launcher-12.rc @@ -0,0 +1,8 @@ +[Entry 0] +Name=Quit +Exec=larchquit.py xfce +Terminal=false +StartupNotify=true +Comment=Exit the current session +Icon=gnome-logout + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/launcher-7.rc b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/launcher-7.rc new file mode 100644 index 0000000..f13d351 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/launcher-7.rc @@ -0,0 +1,12 @@ +[Entry 0] +Name=Command Prompt +Comment=X terminal emulator +Icon=xfce-terminal +Exec=exo-open --launch TerminalEmulator +Terminal=false +StartupNotify=false + +[Global] +MoveFirst=false +ArrowPosition=0 + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/launcher-8.rc b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/launcher-8.rc new file mode 100644 index 0000000..dec40db --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/launcher-8.rc @@ -0,0 +1,12 @@ +[Entry 0] +Name=Editor +Comment=Edit text files +Icon=xfce-edit +Exec=mousepad +Terminal=false +StartupNotify=false + +[Global] +MoveFirst=false +ArrowPosition=0 + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/launcher-9.rc b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/launcher-9.rc new file mode 100644 index 0000000..804f588 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/launcher-9.rc @@ -0,0 +1,12 @@ +[Global] +MoveFirst=false +ArrowPosition=0 + +[Entry 0] +Name=File Manager +Comment=Manage files and folders +Icon=Thunar +Exec=thunar +Terminal=false +StartupNotify=true + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/pager-2.rc b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/pager-2.rc new file mode 100644 index 0000000..b485293 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/pager-2.rc @@ -0,0 +1,4 @@ +rows=1 +scrolling=true +show-names=false + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/panels.xml b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/panels.xml new file mode 100644 index 0000000..87366cd --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/panels.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE config SYSTEM "config.dtd"> +<panels> + <panel> + <properties> + <property name="size" value="28"/> + <property name="monitor" value="0"/> + <property name="screen-position" value="11"/> + <property name="fullwidth" value="1"/> + <property name="xoffset" value="0"/> + <property name="yoffset" value="738"/> + <property name="handlestyle" value="0"/> + <property name="autohide" value="0"/> + <property name="transparency" value="20"/> + <property name="activetrans" value="0"/> + </properties> + <items> + <item name="xfce4-menu" id="5"/> + <item name="separator" id="6"/> + <item name="launcher" id="7"/> + <item name="launcher" id="8"/> + <item name="launcher" id="9"/> + <item name="launcher" id="10"/> + <item name="tasklist" id="3"/> + <item name="systray" id="4"/> + <item name="pager" id="2"/> + <item name="showdesktop" id="1"/> + <item name="separator" id="11"/> + <item name="xfce4-mixer-plugin" id="17"/> + <item name="cpugraph" id="15"/> + <item name="datetime" id="16"/> + <item name="separator" id="13"/> + <item name="launcher" id="12"/> + </items> + </panel> +</panels> diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/separator-11.rc b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/separator-11.rc new file mode 100644 index 0000000..c46dd6a --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/separator-11.rc @@ -0,0 +1,2 @@ +separator-type=2 + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/separator-13.rc b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/separator-13.rc new file mode 100644 index 0000000..c46dd6a --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/separator-13.rc @@ -0,0 +1,2 @@ +separator-type=2 + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/separator-6.rc b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/separator-6.rc new file mode 100644 index 0000000..c46dd6a --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/separator-6.rc @@ -0,0 +1,2 @@ +separator-type=2 + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/systray-4.rc b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/systray-4.rc new file mode 100644 index 0000000..6b4370d --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/systray-4.rc @@ -0,0 +1,7 @@ +[Global] +ShowFrame=false +Rows=1 + +[Applications] +xfce4-power-manager=false + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/tasklist-3.rc b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/tasklist-3.rc new file mode 100644 index 0000000..7a8acf3 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/tasklist-3.rc @@ -0,0 +1,7 @@ +grouping=1 +width=300 +all_workspaces=false +expand=true +flat_buttons=true +show_handles=true + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/xfce4-menu-5.rc b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/xfce4-menu-5.rc new file mode 100644 index 0000000..f532525 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/xfce4-menu-5.rc @@ -0,0 +1,7 @@ +use_default_menu=true +menu_file= +icon_file=/usr/share/pixmaps/xfce4_xicon1.png +show_menu_icons=true +button_title=Xfce Menu +show_button_title=false + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/xfce4-mixer-plugin-17.rc b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/xfce4-mixer-plugin-17.rc new file mode 100644 index 0000000..efd19ae --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/xfce4-mixer-plugin-17.rc @@ -0,0 +1,7 @@ +[mixer-plugin] +Device=default +LauncherCommand=xfce4-mixer +LauncherRunInTerminal=false +LauncherUseStartupNotification=false +MasterControl=Master,0 + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.local/share/applications/xfce4-logout.desktop b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.local/share/applications/xfce4-logout.desktop new file mode 100644 index 0000000..47d1bff --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.local/share/applications/xfce4-logout.desktop @@ -0,0 +1,75 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Encoding=UTF-8 +Exec=larchquit.py xfce +Icon=system-log-out +StartupNotify=true +Terminal=false +Categories=X-XFCE;X-Xfce-Toplevel; +OnlyShowIn=XFCE; +Name=Log Out +Name[ar]=تسجيل الخروج +Name[be]=Выйсьці +Name[ca]=Surt +Name[cs]=Odhlásit se +Name[da]=Logud +Name[de]=Abmelden +Name[el]=Αποσύνδεση +Name[en_GB]=Log Out +Name[es]=Cerrar sesión +Name[et]=Kirjuta välja +Name[eu]=Saio itxi +Name[fi]=Lopeta +Name[fr]=Déconnexion +Name[hu]=Kijelentkezés +Name[id]=Log Keluar +Name[it]=Fine sessione +Name[ja]=ログアウト +Name[ko]=종료 +Name[lv]=Atteikties +Name[nb]=Logg ut +Name[nl]=Uitloggen +Name[pa]=ਲਾਗ ਆਉਟ +Name[pl]=Wyloguj +Name[pt]=Sair +Name[pt_BR]=Sair +Name[ru]=Выйти +Name[sq]=Dilni +Name[sv]=Logga ut +Name[tr]=Çık +Name[uk]=Завершити сеанс +Name[ur]=لاگ آؤٹ +Name[zh_CN]=注销 +Comment=Log out of the Xfce Desktop +Comment[ar]=تسجيل الخروج من سطح مكتب Xfce +Comment[be]=Выхад з асяроддзя Xfce 4 +Comment[ca]=Surt de l’escriptori Xfce +Comment[cs]=Odhlásit se z prostředí Xfce +Comment[da]=Logud af Xfce-skrivebordet +Comment[de]=Von der Arbeitsumgebung abmelden +Comment[el]=Αποσυνδεθείτε από το Xfce +Comment[en_GB]=Log out of the Xfce Desktop +Comment[es]=Salir del escritorio Xfce +Comment[et]=Kirjuta Xfce-töölauast välja +Comment[eu]=Saioa itxi Xfce idazmahaiean +Comment[fi]=Kirjaudu ulos Xfce-työpöydältä +Comment[fr]=Déconnexion du bureau Xfce +Comment[hu]=Kijelentkezés az Xfce Munkakörnyezetből +Comment[id]=Log keluar Destop Xfce +Comment[it]=Fine sessione di Xfce +Comment[ja]=Xfce デスクトップからログアウトします +Comment[ko]=Xfce 4 데스크탑 종료 +Comment[lv]=Atteikties no Xfce darbavirsmas +Comment[nb]=Logg av Xfce skrivebordet +Comment[pa]=Xfce ਡੈਸਕਟਾਪ ਤੋਂ ਲਾਗ ਆਉਟ +Comment[pl]=Wyloguj się z Xfce +Comment[pt]=Sair do Ambiente Xfce +Comment[pt_BR]=Sair do Xfce +Comment[ru]=Выйти из Xfce +Comment[sq]=Dil prej Desktopit Xfce 4 +Comment[sv]=Logga ut från Xfce-skrivbordet +Comment[tr]=Xfce Masaüstünden çık +Comment[uk]=Завершити сеанс Xfce +Comment[ur]=ایکسفس ڈیسک ٹاپ سے لاگ آؤٹ کریں +Comment[zh_CN]=注销 Xfce diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.xinitrc b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.xinitrc new file mode 100644 index 0000000..112e032 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.xinitrc @@ -0,0 +1,2 @@ +desktop=xfce +. /etc/X11/xinit/xinitrc.custom diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.xsession b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.xsession new file mode 100755 index 0000000..a16dc0b --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.xsession @@ -0,0 +1,10 @@ +#!/bin/sh + +# +# ~/.xsession +# +# Executed by xdm/gdm/kdm at login +# + +/bin/bash --login -i ~/.xinitrc + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.bash_profile b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.bash_profile new file mode 100644 index 0000000..600bd9b --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.bash_profile @@ -0,0 +1,3 @@ +. $HOME/.bashrc + +. /etc/X11/xinit/startx.custom diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.bashrc b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.bashrc new file mode 100644 index 0000000..3e5c29c --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.bashrc @@ -0,0 +1,2 @@ +alias ls='ls --color=auto' +PS1='[\u@\h \W]\$ ' diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/Terminal/terminalrc b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/Terminal/terminalrc new file mode 100644 index 0000000..172b4d3 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/Terminal/terminalrc @@ -0,0 +1,89 @@ +[Configuration] +AccelNewTab=<control><shift>t +AccelNewWindow=<control><shift>n +AccelDetachTab=<control><shift>d +AccelCloseTab=<control><shift>w +AccelCloseWindow=<control><shift>q +AccelCopy=<control><shift>c +AccelPaste=<control><shift>v +AccelPreferences=Disabled +AccelShowMenubar=Disabled +AccelShowToolbars=Disabled +AccelShowBorders=Disabled +AccelFullscreen=F11 +AccelSetTitle=Disabled +AccelReset=Disabled +AccelResetAndClear=Disabled +AccelPrevTab=<control>Page_Up +AccelNextTab=<control>Page_Down +AccelSwitchToTab1=<Alt>1 +AccelSwitchToTab2=<Alt>2 +AccelSwitchToTab3=<Alt>3 +AccelSwitchToTab4=<Alt>4 +AccelSwitchToTab5=<Alt>5 +AccelSwitchToTab6=<Alt>6 +AccelSwitchToTab7=<Alt>7 +AccelSwitchToTab8=<Alt>8 +AccelSwitchToTab9=<Alt>9 +AccelContents=F1 +BackgroundMode=TERMINAL_BACKGROUND_SOLID +BackgroundImageFile= +BackgroundImageStyle=TERMINAL_BACKGROUND_STYLE_TILED +BackgroundDarkness=0.500000 +BindingBackspace=TERMINAL_ERASE_BINDING_AUTO +BindingDelete=TERMINAL_ERASE_BINDING_AUTO +ColorForeground=White +ColorBackground=Black +ColorCursor=Green +ColorSelection=White +ColorSelectionUseDefault=TRUE +ColorPalette1=#000000000000 +ColorPalette2=#aaaa00000000 +ColorPalette3=#0000aaaa0000 +ColorPalette4=#aaaa55550000 +ColorPalette5=#00000000aaaa +ColorPalette6=#aaaa0000aaaa +ColorPalette7=#0000aaaaaaaa +ColorPalette8=#aaaaaaaaaaaa +ColorPalette9=#555555555555 +ColorPalette10=#ffff55555555 +ColorPalette11=#5555ffff5555 +ColorPalette12=#ffffffff5555 +ColorPalette13=#55555555ffff +ColorPalette14=#ffff5555ffff +ColorPalette15=#5555ffffffff +ColorPalette16=#ffffffffffff +CommandUpdateRecords=TRUE +CommandLoginShell=FALSE +FontAllowBold=TRUE +FontAntiAlias=TRUE +FontName=Monospace 12 +MiscAlwaysShowTabs=FALSE +MiscBell=FALSE +MiscBordersDefault=TRUE +MiscCursorBlinks=FALSE +MiscDefaultGeometry=80x24 +MiscInheritGeometry=FALSE +MiscMenubarDefault=TRUE +MiscMouseAutohide=FALSE +MiscToolbarsDefault=FALSE +MiscConfirmClose=TRUE +MiscCycleTabs=TRUE +MiscTabCloseButtons=TRUE +MiscTabPosition=GTK_POS_TOP +MiscHighlightUrls=TRUE +ScrollingBar=TERMINAL_SCROLLBAR_RIGHT +ScrollingLines=1000 +ScrollingOnOutput=TRUE +ScrollingOnKeystroke=TRUE +ScrollingSingleLine=TRUE +ShortcutsNoMenukey=TRUE +ShortcutsNoMnemonics=FALSE +TitleInitial=Terminal +TitleMode=TERMINAL_TITLE_APPEND +Term=xterm +VteWorkaroundTitleBug=TRUE +WordChars=-A-Za-z0-9,./?%&#:_~ +TabActivityColor=#afff00000000 +TabActivityTimeout=2.000000 + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/Thunar/thunarrc b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/Thunar/thunarrc new file mode 100644 index 0000000..7857976 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/Thunar/thunarrc @@ -0,0 +1,36 @@ +[Configuration] +DefaultView=void +LastCompactViewZoomLevel=THUNAR_ZOOM_LEVEL_SMALLEST +LastDetailsViewColumnOrder=THUNAR_COLUMN_NAME,THUNAR_COLUMN_SIZE,THUNAR_COLUMN_TYPE,THUNAR_COLUMN_DATE_MODIFIED +LastDetailsViewColumnWidths= +LastDetailsViewFixedColumns=FALSE +LastDetailsViewVisibleColumns=THUNAR_COLUMN_DATE_MODIFIED,THUNAR_COLUMN_NAME,THUNAR_COLUMN_SIZE,THUNAR_COLUMN_TYPE +LastDetailsViewZoomLevel=THUNAR_ZOOM_LEVEL_SMALLER +LastIconViewZoomLevel=THUNAR_ZOOM_LEVEL_NORMAL +LastLocationBar=ThunarLocationButtons +LastSeparatorPosition=170 +LastShowHidden=FALSE +LastSidePane=ThunarShortcutsPane +LastSortColumn=THUNAR_COLUMN_NAME +LastSortOrder=GTK_SORT_ASCENDING +LastStatusbarVisible=TRUE +LastView=ThunarIconView +LastWindowHeight=480 +LastWindowWidth=640 +MiscVolumeManagement=FALSE +MiscCaseSensitive=FALSE +MiscDateStyle=THUNAR_DATE_STYLE_SHORT +MiscFoldersFirst=TRUE +MiscHorizontalWheelNavigates=FALSE +MiscRecursivePermissions=THUNAR_RECURSIVE_PERMISSIONS_ASK +MiscRememberGeometry=TRUE +MiscShowAboutTemplates=TRUE +MiscShowThumbnails=TRUE +MiscSingleClick=TRUE +MiscSingleClickTimeout=500 +MiscTextBesideIcons=FALSE +ShortcutsIconEmblems=TRUE +ShortcutsIconSize=THUNAR_ICON_SIZE_SMALLER +TreeIconEmblems=TRUE +TreeIconSize=THUNAR_ICON_SIZE_SMALLEST + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/autostart/xfce4-settings-helper-autostart.desktop b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/autostart/xfce4-settings-helper-autostart.desktop new file mode 100644 index 0000000..5673067 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/autostart/xfce4-settings-helper-autostart.desktop @@ -0,0 +1,3 @@ +[Desktop Entry] +Hidden=true + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/autostart/xfce4-tips-autostart.desktop b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/autostart/xfce4-tips-autostart.desktop new file mode 100644 index 0000000..5673067 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/autostart/xfce4-tips-autostart.desktop @@ -0,0 +1,3 @@ +[Desktop Entry] +Hidden=true + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/cpugraph-15.rc b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/cpugraph-15.rc new file mode 100644 index 0000000..b757ec3 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/cpugraph-15.rc @@ -0,0 +1,12 @@ +UpdateInterval=2 +TimeScale=0 +Width=30 +Mode=0 +Frame=1 +AssociateCommand=xterm top +ColorMode=0 +Foreground1=#25DF25 +Foreground2=#FF0000 +Background=#FFFFFF +Foreground3=#0000FF + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/datetime-16.rc b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/datetime-16.rc new file mode 100644 index 0000000..e28dc34 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/datetime-16.rc @@ -0,0 +1,6 @@ +layout=3 +date_font=Bitstream Vera Sans 8 +time_font=Bitstream Vera Sans 10 +date_format=%Y/%m/%d +time_format=%H:%M + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/launcher-10.rc b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/launcher-10.rc new file mode 100644 index 0000000..46f8060 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/launcher-10.rc @@ -0,0 +1,12 @@ +[Global] +MoveFirst=false +ArrowPosition=0 + +[Entry 0] +Name=Web Browser +Comment=Surf the internet +Icon=web-browser +Exec=exo-open --launch WebBrowser +Terminal=false +StartupNotify=false + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/launcher-12.rc b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/launcher-12.rc new file mode 100644 index 0000000..a821f3a --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/launcher-12.rc @@ -0,0 +1,8 @@ +[Entry 0] +Name=Quit +Exec=larchquit.py xfce +Terminal=false +StartupNotify=true +Comment=Exit the current session +Icon=gnome-logout + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/launcher-7.rc b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/launcher-7.rc new file mode 100644 index 0000000..f13d351 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/launcher-7.rc @@ -0,0 +1,12 @@ +[Entry 0] +Name=Command Prompt +Comment=X terminal emulator +Icon=xfce-terminal +Exec=exo-open --launch TerminalEmulator +Terminal=false +StartupNotify=false + +[Global] +MoveFirst=false +ArrowPosition=0 + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/launcher-8.rc b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/launcher-8.rc new file mode 100644 index 0000000..dec40db --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/launcher-8.rc @@ -0,0 +1,12 @@ +[Entry 0] +Name=Editor +Comment=Edit text files +Icon=xfce-edit +Exec=mousepad +Terminal=false +StartupNotify=false + +[Global] +MoveFirst=false +ArrowPosition=0 + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/launcher-9.rc b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/launcher-9.rc new file mode 100644 index 0000000..804f588 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/launcher-9.rc @@ -0,0 +1,12 @@ +[Global] +MoveFirst=false +ArrowPosition=0 + +[Entry 0] +Name=File Manager +Comment=Manage files and folders +Icon=Thunar +Exec=thunar +Terminal=false +StartupNotify=true + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/pager-2.rc b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/pager-2.rc new file mode 100644 index 0000000..b485293 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/pager-2.rc @@ -0,0 +1,4 @@ +rows=1 +scrolling=true +show-names=false + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/panels.xml b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/panels.xml new file mode 100644 index 0000000..87366cd --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/panels.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE config SYSTEM "config.dtd"> +<panels> + <panel> + <properties> + <property name="size" value="28"/> + <property name="monitor" value="0"/> + <property name="screen-position" value="11"/> + <property name="fullwidth" value="1"/> + <property name="xoffset" value="0"/> + <property name="yoffset" value="738"/> + <property name="handlestyle" value="0"/> + <property name="autohide" value="0"/> + <property name="transparency" value="20"/> + <property name="activetrans" value="0"/> + </properties> + <items> + <item name="xfce4-menu" id="5"/> + <item name="separator" id="6"/> + <item name="launcher" id="7"/> + <item name="launcher" id="8"/> + <item name="launcher" id="9"/> + <item name="launcher" id="10"/> + <item name="tasklist" id="3"/> + <item name="systray" id="4"/> + <item name="pager" id="2"/> + <item name="showdesktop" id="1"/> + <item name="separator" id="11"/> + <item name="xfce4-mixer-plugin" id="17"/> + <item name="cpugraph" id="15"/> + <item name="datetime" id="16"/> + <item name="separator" id="13"/> + <item name="launcher" id="12"/> + </items> + </panel> +</panels> diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/separator-11.rc b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/separator-11.rc new file mode 100644 index 0000000..c46dd6a --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/separator-11.rc @@ -0,0 +1,2 @@ +separator-type=2 + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/separator-13.rc b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/separator-13.rc new file mode 100644 index 0000000..c46dd6a --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/separator-13.rc @@ -0,0 +1,2 @@ +separator-type=2 + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/separator-6.rc b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/separator-6.rc new file mode 100644 index 0000000..c46dd6a --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/separator-6.rc @@ -0,0 +1,2 @@ +separator-type=2 + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/systray-4.rc b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/systray-4.rc new file mode 100644 index 0000000..6b4370d --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/systray-4.rc @@ -0,0 +1,7 @@ +[Global] +ShowFrame=false +Rows=1 + +[Applications] +xfce4-power-manager=false + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/tasklist-3.rc b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/tasklist-3.rc new file mode 100644 index 0000000..7a8acf3 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/tasklist-3.rc @@ -0,0 +1,7 @@ +grouping=1 +width=300 +all_workspaces=false +expand=true +flat_buttons=true +show_handles=true + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/xfce4-menu-5.rc b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/xfce4-menu-5.rc new file mode 100644 index 0000000..f532525 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/xfce4-menu-5.rc @@ -0,0 +1,7 @@ +use_default_menu=true +menu_file= +icon_file=/usr/share/pixmaps/xfce4_xicon1.png +show_menu_icons=true +button_title=Xfce Menu +show_button_title=false + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/xfce4-mixer-plugin-17.rc b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/xfce4-mixer-plugin-17.rc new file mode 100644 index 0000000..efd19ae --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/xfce4-mixer-plugin-17.rc @@ -0,0 +1,7 @@ +[mixer-plugin] +Device=default +LauncherCommand=xfce4-mixer +LauncherRunInTerminal=false +LauncherUseStartupNotification=false +MasterControl=Master,0 + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.local/share/applications/xfce4-logout.desktop b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.local/share/applications/xfce4-logout.desktop new file mode 100644 index 0000000..47d1bff --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.local/share/applications/xfce4-logout.desktop @@ -0,0 +1,75 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Encoding=UTF-8 +Exec=larchquit.py xfce +Icon=system-log-out +StartupNotify=true +Terminal=false +Categories=X-XFCE;X-Xfce-Toplevel; +OnlyShowIn=XFCE; +Name=Log Out +Name[ar]=تسجيل الخروج +Name[be]=Выйсьці +Name[ca]=Surt +Name[cs]=Odhlásit se +Name[da]=Logud +Name[de]=Abmelden +Name[el]=Αποσύνδεση +Name[en_GB]=Log Out +Name[es]=Cerrar sesión +Name[et]=Kirjuta välja +Name[eu]=Saio itxi +Name[fi]=Lopeta +Name[fr]=Déconnexion +Name[hu]=Kijelentkezés +Name[id]=Log Keluar +Name[it]=Fine sessione +Name[ja]=ログアウト +Name[ko]=종료 +Name[lv]=Atteikties +Name[nb]=Logg ut +Name[nl]=Uitloggen +Name[pa]=ਲਾਗ ਆਉਟ +Name[pl]=Wyloguj +Name[pt]=Sair +Name[pt_BR]=Sair +Name[ru]=Выйти +Name[sq]=Dilni +Name[sv]=Logga ut +Name[tr]=Çık +Name[uk]=Завершити сеанс +Name[ur]=لاگ آؤٹ +Name[zh_CN]=注销 +Comment=Log out of the Xfce Desktop +Comment[ar]=تسجيل الخروج من سطح مكتب Xfce +Comment[be]=Выхад з асяроддзя Xfce 4 +Comment[ca]=Surt de l’escriptori Xfce +Comment[cs]=Odhlásit se z prostředí Xfce +Comment[da]=Logud af Xfce-skrivebordet +Comment[de]=Von der Arbeitsumgebung abmelden +Comment[el]=Αποσυνδεθείτε από το Xfce +Comment[en_GB]=Log out of the Xfce Desktop +Comment[es]=Salir del escritorio Xfce +Comment[et]=Kirjuta Xfce-töölauast välja +Comment[eu]=Saioa itxi Xfce idazmahaiean +Comment[fi]=Kirjaudu ulos Xfce-työpöydältä +Comment[fr]=Déconnexion du bureau Xfce +Comment[hu]=Kijelentkezés az Xfce Munkakörnyezetből +Comment[id]=Log keluar Destop Xfce +Comment[it]=Fine sessione di Xfce +Comment[ja]=Xfce デスクトップからログアウトします +Comment[ko]=Xfce 4 데스크탑 종료 +Comment[lv]=Atteikties no Xfce darbavirsmas +Comment[nb]=Logg av Xfce skrivebordet +Comment[pa]=Xfce ਡੈਸਕਟਾਪ ਤੋਂ ਲਾਗ ਆਉਟ +Comment[pl]=Wyloguj się z Xfce +Comment[pt]=Sair do Ambiente Xfce +Comment[pt_BR]=Sair do Xfce +Comment[ru]=Выйти из Xfce +Comment[sq]=Dil prej Desktopit Xfce 4 +Comment[sv]=Logga ut från Xfce-skrivbordet +Comment[tr]=Xfce Masaüstünden çık +Comment[uk]=Завершити сеанс Xfce +Comment[ur]=ایکسفس ڈیسک ٹاپ سے لاگ آؤٹ کریں +Comment[zh_CN]=注销 Xfce diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.ssh/id_rsa.pub b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.ssh/id_rsa.pub new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.ssh/id_rsa.pub diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.xinitrc b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.xinitrc new file mode 100644 index 0000000..112e032 --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.xinitrc @@ -0,0 +1,2 @@ +desktop=xfce +. /etc/X11/xinit/xinitrc.custom diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.xsession b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.xsession new file mode 100755 index 0000000..a16dc0b --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.xsession @@ -0,0 +1,10 @@ +#!/bin/sh + +# +# ~/.xsession +# +# Executed by xdm/gdm/kdm at login +# + +/bin/bash --login -i ~/.xinitrc + diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/Desktop/Install Arch Linux.desktop b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/Desktop/Install Arch Linux.desktop new file mode 100644 index 0000000..4f8bb8d --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/Desktop/Install Arch Linux.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Application +Name=Install Arch Linux +Comment=larchin, the larch / Arch installer +Categories=Application; +Exec=larchin +Icon=larchin +Terminal=false +StartupNotify=true +GenericName= diff --git a/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/Desktop/Larch Documentation.desktop b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/Desktop/Larch Documentation.desktop new file mode 100644 index 0000000..ba0baac --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/rootoverlay/root/Desktop/Larch Documentation.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Application +Name=Larch Documentation +Comment= +Categories=Application; +Exec=xdg-open file:///opt/apps/larch/docs/html/index.html +Icon=larch +Terminal=false +StartupNotify=true diff --git a/build_tools/l7/larch0/profiles/xmini/vetopacks b/build_tools/l7/larch0/profiles/xmini/vetopacks new file mode 100644 index 0000000..f85fa2d --- /dev/null +++ b/build_tools/l7/larch0/profiles/xmini/vetopacks @@ -0,0 +1,6 @@ +xterm +xorg-twm +xorg-fonts-75dpi +xorg-fonts-100dpi +xorg-docs +xorg-res-utils diff --git a/build_tools/l7/larch0/scripts/gen_repo b/build_tools/l7/larch0/scripts/gen_repo new file mode 100755 index 0000000..86e7b85 --- /dev/null +++ b/build_tools/l7/larch0/scripts/gen_repo @@ -0,0 +1,206 @@ +#!/usr/bin/env python + +# gen_repo - build a repository db file from a set of packages +# +# Author: Michael Towers (gradgrind) <mt.42@web.de> +# +# This file is part of the larch project. +# +# larch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# larch is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with larch; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#---------------------------------------------------------------------------- +# +# Version 1.5 // 7th July 2007 + +import os +import os.path +import sys +import tarfile +from types import * +import re +from subprocess import check_call + +# to add a package: +#check_call(["repo-add", dbfile, pkg, pkg, pkg, ...]) + +# Regex to remove version comparison from package dependency +onlyname = re.compile("([^=><]+).*") + +def create_db(dbname, packagesdir, dep_ignore_list): + os.chdir(packagesdir) + dbfile = dbname + ".db.tar.gz" + if os.path.exists(dbfile): + os.remove(dbfile) + + # Get a list of packages + packages = filter(lambda s: s.endswith(".pkg.tar.gz"), os.listdir(".")) + packages.sort() + + # Use 'repo-add' to build the repo + check_call(["repo-add", dbfile] + packages) + + # Make a dict for keeping track of dependencies + dep_dict = {} + for p in packages: + pkg_dict = get_pkg_info(p) + pkg_name = pkg_dict["pkgname"] + pkg_dbname = pkg_name + "-" + pkg_dict["pkgver"] + # Add dependency info to dependency dict + for d in pkg_dict["depend"]: + # But also need to cater for versioning!!! + # I will just ignore it here ... + dm = onlyname.match(d) + if not dm: + if d: + print "DEBUG: package %s, dependency = '%s'" % (pkg_name, d) + continue + d = dm.group(1) + if not dep_dict.has_key(d): + dep_dict[d] = [False] + dep_dict[d].append(pkg_name) + # Mark packages provided by this one + for p in (pkg_dict["provides"] + [pkg_name]): + if dep_dict.has_key(p): + dep_dict[p][0] = True + else: + dep_dict[p] = [True] + # Mark packages in ignore list + for p in dep_ignore_list: + if dep_dict.has_key(p): + dep_dict[p][0] = True + + # Now display unsatisfied dependencies + # Should add the possibility of declaring a list of packages + # available (e.g. the base set, or all those on the live CD ..." + print "-------------\nUnsatisfied dependencies:" + for d, r in dep_dict.items(): + if not r[0]: + print " ", d, "- needed by: ", + for p in r[1:]: + print p, " ", + print "" + + + +def get_pkg_info(pkg): + tf = tarfile.open(pkg, "r:gz") + pkginfo = tf.extractfile(".PKGINFO") + pkg_dict = {# the first ones go to 'desc' + "pkgname" : None, + "pkgver" : None, + # from here they are optional, and can occur more than once + "depend" : [], + "provides" : [], + } + while True: + l = pkginfo.readline().strip() + if not l: break + if l[0] == "#": continue + split3 = l.split(None, 2) + while len(split3) < 3: split3.append("") + key, eq, value = split3 + if not pkg_dict.has_key(key): continue + val = pkg_dict[key] + if val == None: + pkg_dict[key] = value + continue + if not isinstance(val, ListType): + print "Unexpected situation ...\n key [oldvalue] <- newvalue" + print key, "[%s]" % val, "<-", value + sys.exit(1) + pkg_dict[key].append(value) + pkginfo.close() + return pkg_dict + +def cat(path): + """Python version of 'cat'""" + fp = open(path, "r") + op = "" + for l in fp: + op += l + fp.close() + return op + +def usage(): + print """ + gen_repo package-dir [repo-name] [-- ignore-list] + + Generate a pacman db file for the packages in package-dir. + + If repo-name is given, this will be used as the name for the repository, + otherwise the name of the directory containing the packages will be used. + + All dependencies of the packages in the repository will be listed to + standard output, but a list of packages not to be included in this list + can be specified: + ignore-list should be either a file containing the names of packages + not to be listed as dependencies (separated by space or newline), or a + directory containing 'package directories', like /var/abs/base or + /var/lib/pacman/local + """ + sys.exit(1) + +if __name__ == "__main__": + + if len(sys.argv) < 2: + usage() + if os.getuid() != 0: + print "Must be root to run this" + sys.exit(1) + pkgdir = sys.argv[1] + if (len(sys.argv) == 2) or (sys.argv[2] == "--"): + dbname = os.path.basename(os.path.abspath(pkgdir)) + i = 2 + else: + dbname = sys.argv[2] + i = 3 + if len(sys.argv) == i: + ignore_list = [] + elif (len(sys.argv) == i+2) and (sys.argv[i] == "--"): + ignore_list = sys.argv[i+1] + else: + usage() + if not os.path.isdir(pkgdir): + print "\n1st argument must be a directory" + sys.exit(1) + print "\nCreating pacman database (%s.db.tar.gz) file in %s" % (dbname, pkgdir) + + if ignore_list: + # Get list of packages to be ignored in dependency list + if os.path.isfile(ignore_list): + # A simple file containing the names of packages to ignore + # separated by space or newline. + ignore_list = cat(ignore_list).split() + elif os.path.isdir(ignore_list): + # A directory containing packages or package-directories (like in abs) + l = os.listdir(ignore_list) + # See if there are packages in this directory + lp = filter(lambda s: s.endswith(".pkg.tar.gz"), l) + if lp: + l = map(lambda s: s.replace(".pkg.tar.gz", ""), lp) + re1 = re.compile("(.+)-[^-]+?-[0-9]+") + ignore_list = [] + for f in l: + m = re1.match(f) + if m: + ignore_list.append(m.group(1)) + else: + # the directory contains just the package names (like abs) + ignore_list.append(m) + else: + print "!!! Invalid ignore-list" + usage() + + create_db(dbname, pkgdir, ignore_list) diff --git a/build_tools/l7/larch0/scripts/repos.sh b/build_tools/l7/larch0/scripts/repos.sh new file mode 100755 index 0000000..731a1d5 --- /dev/null +++ b/build_tools/l7/larch0/scripts/repos.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +# Script to build repository database archives from the current state of +# the pacman/sync database on the running system. + +# $1 (optional) is the directory within which subdirectories for each +# repository will be built. The default is the current directory. + +if [ -z "$1" ]; then + d="." +else + d="$1" +fi + +for f in core extra community; do + mkdir -p ${d}/${f} + echo "Compressing $f db ..." + tar -czf ${d}/${f}/${f}.db.tar.gz -C /var/lib/pacman/sync/${f} . +done |