diff options
Diffstat (limited to 'build_tools/clarch/larch/run')
-rwxr-xr-x | build_tools/clarch/larch/run/cachepacs | 140 | ||||
-rwxr-xr-x | build_tools/clarch/larch/run/gen_repo | 206 | ||||
-rwxr-xr-x | build_tools/clarch/larch/run/getPackageServer | 275 | ||||
-rwxr-xr-x | build_tools/clarch/larch/run/inpacs | 302 | ||||
-rw-r--r-- | build_tools/clarch/larch/run/jams.cachepacks.larch.patch | 352 | ||||
-rw-r--r-- | build_tools/clarch/larch/run/jams.larch.patch | 110 | ||||
-rwxr-xr-x | build_tools/clarch/larch/run/larchify | 140 | ||||
-rwxr-xr-x | build_tools/clarch/larch/run/mklarch | 284 | ||||
-rw-r--r-- | build_tools/clarch/larch/run/myusbboot | 89 | ||||
-rwxr-xr-x | build_tools/clarch/larch/run/ssh_init | 18 | ||||
-rwxr-xr-x | build_tools/clarch/larch/run/usb2bootiso | 66 | ||||
-rwxr-xr-x | build_tools/clarch/larch/run/usb2iso | 78 | ||||
-rwxr-xr-x | build_tools/clarch/larch/run/usbboot | 100 | ||||
-rwxr-xr-x | build_tools/clarch/larch/run/usbboot.orig | 155 | ||||
-rwxr-xr-x | build_tools/clarch/larch/run/usbboot_grub | 180 | ||||
-rwxr-xr-x | build_tools/clarch/larch/run/xpack | 122 |
16 files changed, 0 insertions, 2617 deletions
diff --git a/build_tools/clarch/larch/run/cachepacs b/build_tools/clarch/larch/run/cachepacs deleted file mode 100755 index 3e4a1fb..0000000 --- a/build_tools/clarch/larch/run/cachepacs +++ /dev/null @@ -1,140 +0,0 @@ -#! /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/clarch/larch/run/gen_repo b/build_tools/clarch/larch/run/gen_repo deleted file mode 100755 index 86e7b85..0000000 --- a/build_tools/clarch/larch/run/gen_repo +++ /dev/null @@ -1,206 +0,0 @@ -#!/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/clarch/larch/run/getPackageServer b/build_tools/clarch/larch/run/getPackageServer deleted file mode 100755 index 170ea73..0000000 --- a/build_tools/clarch/larch/run/getPackageServer +++ /dev/null @@ -1,275 +0,0 @@ -#!/usr/bin/env python -# -*- coding: UTF-8 -*- - -# getPackageServer - select a pacman package server -# -# 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 -# -#---------------------------------------------------------------------------- -#2008.08.10 - -import getopt, sys, os -from subprocess import Popen, PIPE, STDOUT - -# Build a list structure with areas, subareas and servers -# [ [area1, [ [subarea1, [server1, server2, ...]], -# [subarea2, [server1, server2, ...]], -# ... -# ] -# ], -# [area2, [ [subarea1, [server1, server2, ...]], -# [subarea2, [server1, server2, ...]], -# ... -# ] -# ], -# ... -# ] -def parseFile(path): - areas = [] - header = True - fh = open(path) - for line in fh: - sline = line.strip() - if header: - if not sline.startswith('#'): - header = False - continue - - if not sline: - continue - - if sline.startswith('#'): - if (sline.find('Server =') >= 0): - # Commented out server - continue - if sline.startswith('##'): - # Real comment - continue - # Otherwise assume this is an area name - if sline.startswith('# -'): - # New subarea - servers = [] - subarealist = [sline.split('-', 1)[1].strip(), servers] - subareas.append(subarealist) - else: - # New area (if no subarea, use 'all') - servers = None - subareas = [] - arealist = [sline[1:].strip(), subareas] - areas.append(arealist) - continue - - if sline.startswith('Server ='): - server = sline.split('=')[1].strip() - if (servers == None): - servers = [] - subarealist = ['all', servers] - subareas.append(subarealist) - servers.append(server) - - else: - report("Unexpected line:\n%s\n" % line) - - fh.close() - return areas - -#Menu using 'dialog' -#+++++++++++++++++++ -# geometry: -WIDTH = '76' -HEIGHT = '20' -LINES = '8' -def menu_d(title, text, entries, default=0, header=None): - # Note that dialog indexing starts at 1, not 0! - i = 1 - mlist = [] - for m in entries: - mlist += ["%d" % i, "%-60s" % m] - i += 1 - if header: - text += "\n " + header - cmd = ['dialog', '--title', title, - '--default-item', "%d" % (default+1), - '--menu', text, HEIGHT, WIDTH, LINES] + mlist - #print cmd - p = Popen(cmd, stderr=PIPE) - output = p.communicate()[1] - rc = p.returncode - - if (rc == 0): - return int(output) - elif (rc == 1): - return 0 - else: - assert False - -#Menu using plain console -#++++++++++++++++++++++++ -def menu_c(title, text, entries): - t = "***** %s *****" % title - print t - print "=" * len(t) - print text - i = 0 - ilist = "123456789abcdefghijklmnopqrstuvwxyz" - for m in entries: - print " %s - %-60s" % (ilist[i], m) - i += 1 - print "-----------------------------------------" - print " 0 - Go back" - k = raw_input("Select: ") - if (k == "0"): - return 0 - n = -1 - if k in "123456789": - n = (ord(k) - ord("0")) - elif k in "abcdefghijklmnopqrstuvwxyz": - n = (ord(k) - ord("a") + 10) - assert ((n>0) and (n<=i)) - return n - -def menu(title, text, entries, default=0, header=None): - """General menu, uses 'dialog' if available, else plain console. - """ - if console: - return menu_c(title, text, entries) - else: - return menu_d(title, text, entries, default=0, header=None) - -import re -re1 = re.compile(r"/\$repo/os/.*") -def repoDialog(servers): - serverList = parseFile(servers) - step = 0 - while True: - if (step == 0): - areaList = [a[0] for a in serverList] - a1 = menu("Choose Arch Repository", - "Select a region", - areaList) - if (a1 == 0): - step = -1 - break - step = 1 - - list2 = serverList[a1-1][1] - if (len(list2) == 1): - a = 1 - step = 0 - else: - subareaList = [a[0] for a in list2] - a = menu("Choose Arch Repository", - "Select a sub-region", - subareaList) - if (a == 0): - step = 0 - continue - - mirrorList = list2[a-1][1] - list3 = [re1.sub("", m) for m in mirrorList] - a = menu("Choose Arch Repository", - "Select a mirror", - list3) - if (a > 0): - break - - if (step >= 0): - return mirrorList[a-1] - else: - return None - - -def usage(): - print "Usage:" - print " getPackageServer [-h] [-i <repository list file>] [<pacman.conf>]" - print - print "Select a server for Arch Linux packages. The given pacman.conf" - print "file will be updated to use the chosen server first. Other entries" - print "will not be affected." - print - print " -h Print this message" - print " -i Supply an alternative list of repositories." - print " The default is /etc/pacman.d/mirrorlist" - print " -c Use plain console for interaction even if" - print " 'dialog' is available" - print - print "If no pacman.conf file is supplied, the chosen repository URL will" - print "be output to stdout - mainly for test purposes." - -if __name__ == '__main__': - def report(text): - print text - - repolist = '/etc/pacman.d/mirrorlist' - - # determine whether 'dialog' utility is available - p = Popen(["which", "dialog"], stdout=PIPE, stderr=STDOUT) - output = p.communicate()[1] - console = (p.returncode != 0) - - try: - opts, args = getopt.getopt(sys.argv[1:], "i:hc") - except getopt.GetoptError: - # print help information and exit: - usage() - sys.exit(1) - for o, a in opts: - if (o == "-h"): - usage() - sys.exit() - if (o == "-i"): - repolist = a - if (o == "-c"): - console = True - - if (len(args) > 1): - # print help information and exit: - usage() - sys.exit(1) - - mirror = repoDialog(repolist) - if not mirror: - print "Cancelled" - sys.exit(1) - - if (len(args) == 0): - print mirror - sys.exit(0) - - # Generate pacman.conf file - mirror = "Server = " + mirror - # The value for @carch@ will be substituted when building the package - mirror = mirror.replace("@carch@", "i686") - pcfile = args[0] - pcfh = open(pcfile, "r") - pcf = pcfh.read() - pcfh.close() - os.remove(pcfile) - pcfh = open(pcfile, "w") - for line in pcf.splitlines(True): - pcfh.write(line) - if line.startswith("[core]"): - pcfh.write(mirror.replace("$repo", "core") + "\n") - elif line.startswith("[extra]"): - pcfh.write(mirror.replace("$repo", "extra") + "\n") - elif line.startswith("[community]"): - pcfh.write(mirror.replace("$repo", "community") + "\n") - - pcfh.close() - print "++ Updated %s" % pcfile diff --git a/build_tools/clarch/larch/run/inpacs b/build_tools/clarch/larch/run/inpacs deleted file mode 100755 index 7bde214..0000000 --- a/build_tools/clarch/larch/run/inpacs +++ /dev/null @@ -1,302 +0,0 @@ -#! /bin/bash -# -# inpacs - install Arch Linux using pacman -# -# 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 -# -#---------------------------------------------------------------------------- -#2008.08.09 - -# Note that this has quite a few differences to 'pacin' (now deprecated). -# Read the usage blurb carefully, for example the options -c, -a (changed -# defaults), and -x (the format of the veto file has changed slightly). - - -# 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 -} - -usage () { - echo - echo "Usage:" - echo " ${APP} [-k <path to pacman configuration file> ]" - echo " [-a <addedpacksfile>]" - echo " [-c <package cache directory>]" - echo " [-b <path to base package list file>]" - echo " [-x <path to vetofile>]" - echo " [-y <path to pacman database directories>]" - echo " [-P <path to pacman executable>]" - echo " <install path>" - echo - echo " -k Use the given file instead of /etc/pacman.conf" - echo - echo " -a Use list of packages in <addedpacksfile> (path/to/file)" - echo " for 2nd install phase. If not specified, only do" - echo " base installation" - echo - echo " -c Use given package cache (on host). Default is to" - echo " create '${CACHE}' on the target and" - echo " use this. If an empty path ('') is given, use the" - echo " default on the host." - echo - echo " -b Use the packages (name only, one per line) in this" - echo " file as the base set, installed during the first stage." - echo " By default this list will be extracted from the" - echo " file 'packages.txt' in the 'core' repository." - echo - echo " -x Remove the packages (name only, one per line)" - echo " in this file from the list of base packages" - echo " before doing the first installation stage." - echo - echo " -y Don't perform 'pacman -Sy' before installing," - echo " but copy the pacman database directories from" - echo " the given parent directory." - echo - echo " -P Use the given pacman executable (possibly" - echo " useful on non-Arch systems)." - echo - echo "${APP} will do an automated Arch Linux installation to the given" - echo "installation directory by installing one or two lists of packages." - echo "It only installs the packages, without configuration." - echo - echo "Initially it installs the set of base packages (though this set" - echo "is fully configurable). It can then, optionally, install a further" - echo "set of additional packages." - echo - echo "Where it gets the packages from is fully configurable (via" - echo "the pacman configuration file and the package cache location)" - echo "By previously mounting a remote package cache using sshfs or" - echo "NFS it is also possible to use that." - echo - exitfunc -} - -# Default package cache (this is a statement, not a configuration, so -# do not change it!) -CACHE="/var/cache/pacman/pkg" -# 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} - ADDEDPACKS=${f} ;; - c ) TARGETCACHE="" - if [ -n "${OPTARG}" ]; then - HOSTCACHE=${OPTARG} - checkdir ${HOSTCACHE} - HOSTCACHE=${f} - fi ;; - b ) checkfile ${OPTARG} - BASEPACKSFILE=${f} ;; - x ) checkfile ${OPTARG} - VETOFILE=${f} ;; - y ) checkdir ${OPTARG} - DBDIR=${f} ;; - P ) checkfile ${OPTARG} - PACMANX=${f} ;; - * ) usage ;; - esac -done -shift $((${OPTIND} - 1)) -INSTLDIR="$1" - -echo "INSTLDIR=${INSTLDIR}" -echo "PACMANK=${PACMANK}" -echo "ADDEDPACKS=${ADDEDPACKS}" -echo "TARGETCACHE=${TARGETCACHE}" -echo "HOSTCACHE=${HOSTCACHE}" -echo "BASEPACKSFILE=${BASEPACKSFILE}" -echo "VETOFILE=${VETOFILE}" -echo "DBDIR=${DBDIR}" -echo "PACMANX=${PACMANX}" -echo - -if [ -d "${INSTLDIR}" ]; then - # This is not a brilliant test, but at least it will pick up - # data files in the destination directory, without being disturbed - # by sub-mounts. - if [ -n "$( find ${INSTLDIR} ! -type d )" ]; then - echo "ERROR: Installation directory (${INSTLDIR}) not empty" - exitfunc 1 - fi -else - echo "ERROR: Installation directory (${INSTLDIR}) does not exist" - echo - usage -fi - -# 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 "// Installing Arch Linux to directory ${INSTLDIR}" - -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} -S $( cat $1 ) - RET=$? - umount ${INSTLDIR}/proc - umount ${INSTLDIR}/sys - if [ ${RET} -ne 0 ]; then - echo "//" - echo "// Package installation from $1 FAILED." - echo "//" - return 1 - fi -} - -if [ -n "${TARGETCACHE}" ]; then - # This redirects the package cache to the install target - # (change in pacman-3.1) - PACMAN="${PACMAN} --cachedir ${INSTLDIR}${TARGETCACHE}" -elif [ -n "${HOSTCACHE}" ]; then - # This redirects the package cache to an existing non-standard one - PACMAN="${PACMAN} --cachedir ${HOSTCACHE}" -fi - -mkdir -p ${INSTLDIR}${DBPATH}/sync -if [ -n "${DBDIR}" ]; then - echo "//" - echo "// Fetching package dbs from: ${DBDIR}" - for repo in $( grep "^\[.*\]" ${PACMANCONF} | sed "s|\[\(.*\)\]|\1|"); do - if [ "${repo}" != "options" ]; then - echo " ... ${repo}" - cp -a ${DBDIR}/sync/${repo} ${INSTLDIR}${DBPATH}/sync - fi - done - echo "//" -else - echo "//" - echo "// Synchronising package dbs **************" - echo "//" - ${PACMAN} -r ${INSTLDIR} -Sy -fi - -########## GET LIST OF BASE PACKAGES - -echo "//" -echo "// ** Getting base package list ..." -if [ -n "${BASEPACKSFILE}" ]; then - echo "// from: ${BASEPACKSFILE}" - BASEPKGS=$( cat ${BASEPACKSFILE} | grep -v "#" ) -else - BASEPKGS=$( ${PACMAN} -r ${INSTLDIR} -Sg base | sed 's|^base *||') -fi -echo "//" - -########## LIST OF BASE PACKAGES NOW IN ${BASEPKGS} - -########## FILTER LIST OF BASE PACKAGES - -# Build basepacks by filtering BASEPKGS -: > ${basepacks} -# -# Filter out vetoed packages -for p in ${BASEPKGS}; do - if [ -z "${VETOFILE}" ] || \ - ! grep "^[ ]*${p}[ ]*\$" ${VETOFILE} &>/dev/null; then - echo ${p} >> ${basepacks} - fi -done - -########## FILTERED BASE PACKAGE LIST NOW IN FILE ${basepacks} - -if [ -n "${ADDEDPACKS}" ]; then - echo "//" - echo "// ***** Adding additional packages to install list *****" - echo "//" - for p in $( cat ${ADDEDPACKS} | grep -v "#" ); do - if ! grep "^[ ]*${p}[ ]*\$" ${basepacks} &>/dev/null; then - echo ${p} >> ${basepacks} - fi - done -fi - -echo "//" -echo "// ************** Installing selected packages **************" -echo "//" -doInstall ${basepacks} -if [ $? -ne 0 ]; then exitfunc 1; fi - -echo "//" -echo "// *** inpacs finished! Arch Linux has been installed to ${INSTLDIR} ***" -echo "// It is, however, pretty unconfigured ..." -echo "//" - -exitfunc diff --git a/build_tools/clarch/larch/run/jams.cachepacks.larch.patch b/build_tools/clarch/larch/run/jams.cachepacks.larch.patch deleted file mode 100644 index 2e40e17..0000000 --- a/build_tools/clarch/larch/run/jams.cachepacks.larch.patch +++ /dev/null @@ -1,352 +0,0 @@ -diff -Nur run.orig/cachepacs run/cachepacs ---- run.orig/cachepacs 1970-01-01 00:00:00.000000000 +0000 -+++ run/cachepacs 2008-08-29 02:34:57.000000000 +0000 -@@ -0,0 +1,139 @@ -+#! /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=$? -+ umount ${INSTLDIR}/proc -+ umount ${INSTLDIR}/sys -+ if [ ${RET} -ne 0 ]; then -+ echo "//" -+ echo "// 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 -Nur run.orig/inpacs run/inpacs ---- run.orig/inpacs 2008-08-10 10:51:15.000000000 +0000 -+++ run/inpacs 2008-08-29 02:29:31.000000000 +0000 -@@ -116,7 +116,7 @@ - # Source directory for pacman database directories: - DBDIR="" - # pacman executable: --PACMANX="pacman" -+PACMANX="pacman -f" - # pacman configuration file - PACMANK="/etc/pacman.conf" - -diff -Nur run.orig/jams.larch.patch run/jams.larch.patch ---- run.orig/jams.larch.patch 1970-01-01 00:00:00.000000000 +0000 -+++ run/jams.larch.patch 2008-08-29 02:34:34.000000000 +0000 -@@ -0,0 +1,110 @@ -+Only in run/: cachepacs -+diff -wU4 run.orig/inpacs run/inpacs -+--- run.orig/inpacs 2008-08-10 10:51:15.000000000 +0000 -++++ run/inpacs 2008-08-29 02:29:31.000000000 +0000 -+@@ -115,9 +115,9 @@ -+ VETOFILE="" -+ # Source directory for pacman database directories: -+ DBDIR="" -+ # pacman executable: -+-PACMANX="pacman" -++PACMANX="pacman -f" -+ # pacman configuration file -+ PACMANK="/etc/pacman.conf" -+ -+ checkfile () -+diff -wU4 run.orig/mklarch run/mklarch -+--- run.orig/mklarch 2008-08-10 10:51:15.000000000 +0000 -++++ run/mklarch 2008-08-29 02:29:45.000000000 +0000 -+@@ -22,9 +22,8 @@ -+ # -+ #---------------------------------------------------------------------------- -+ # 2008.06.22 -+ -+- -+ # directory to use for building the CD - the installation root -+ # It must have LOTS of space, ~ 4GB for a 700MB CD -+ INSTLDIR=/home/larchroot -+ -+@@ -162,8 +161,9 @@ -+ fi -+ -+ for fd in $( ls -A ${INSTLDIR} ); do -+ rm -rf ${INSTLDIR}/${fd} -++#lookforme -+ done -+ mkdir -p ${LARCHBUILD} -+ -+ ############### Call 'inpacs' to do the installation -+@@ -186,9 +186,8 @@ -+ exit 1 -+ fi -+ fi -+ INPACSO="${INPACSO} -k pacman.conf" -+- -+ # If necessary add the larch repository to pacman.conf -+ if ! grep '^[larch5]' pacman.conf &>/dev/null; then -+ if [ -d larchrepo ]; then -+ larch5path="file://$( readlink -f larchrepo )" -+@@ -198,14 +197,15 @@ -+ sysarch="i686" -+ fi -+ larch5path="${larch5path}/${sysarch}" -+ fi -+- sed "/\[testing\]/ i \ -+-[larch5]\n\ -+-Server = ${larch5path}\n\ -+-#larch5---\n" -i pacman.conf -++ #sed "/\[testing\]/ i \ -++ echo "[larch5] " >> pacman.conf -++ echo "Server = ${larch5path}" >> pacman.conf -+ fi -+ -++ -++ -+ if ! which pacman &>/dev/null; then -+ if ! [ -x ${startdir}/pacman ]; then -+ echo "ERROR: Couldn't find pacman executable" -+ exit 1 -+@@ -217,17 +217,21 @@ -+ if [ $? -ne 0 ]; then exit 1; fi -+ -+ # Use build version of pacman.conf in live system, without [larch5] repository. -+ # This can be overwritten by a pacman.conf in the profile's overlay. -++ -+ rm -f ${INSTLDIR}/etc/pacman.conf -+-if [ -f pacman.conf.0 ]; then -++if [ -f ${PROFILE}/pacman.conf ]; then -+ # This file should be used in preference to pacman.conf - it is created by -+ # larch-setup on non-Arch systems before commenting out the 'Include' lines. -+- cp pacman.conf.0 ${INSTLDIR}/etc/pacman.conf -++ cp ${PROFILE}/pacman.conf ${INSTLDIR}/etc/pacman.conf -+ else -+ sed '/^\[larch5\]/,/^ *$/ d' <pacman.conf >${INSTLDIR}/etc/pacman.conf -+ fi -+ -++cachepacs -a ${PROFILE}/cache_packs $INPACSO -d ${INSTLDIR} -++ -++ -+ # Generate glibc locales -+ if [ -f ${PROFILE}/locale.gen ]; then -+ echo -+ echo "********** Generating locales **********" -+@@ -247,8 +251,17 @@ -+ fi -+ -+ echo "// ${APP} finished installation of Arch system" -+ echo "//" -++ -++#run script to post-process the new installation -++if [ -f ${PROFILE}/post-process.sh ] -++then -++ ${PROFILE}/post-process.sh ${INSTLDIR} ${PROFILE} -++ echo ${PROFILE}/post-process.sh ${INSTLDIR} ${PROFILE} -++fi -++ -++ -+ if [ -z "${NOLIVE}" ]; then -+ # Get live CD build functions -+ . ${LARCHDATA}/buildlive -+ mklive -diff -Nur run.orig/mklarch run/mklarch ---- run.orig/mklarch 2008-08-10 10:51:15.000000000 +0000 -+++ run/mklarch 2008-08-29 02:29:45.000000000 +0000 -@@ -23,7 +23,6 @@ - #---------------------------------------------------------------------------- - # 2008.06.22 - -- - # directory to use for building the CD - the installation root - # It must have LOTS of space, ~ 4GB for a 700MB CD - INSTLDIR=/home/larchroot -@@ -163,6 +162,7 @@ - - for fd in $( ls -A ${INSTLDIR} ); do - rm -rf ${INSTLDIR}/${fd} -+#lookforme - done - mkdir -p ${LARCHBUILD} - -@@ -187,7 +187,6 @@ - fi - fi - INPACSO="${INPACSO} -k pacman.conf" -- - # If necessary add the larch repository to pacman.conf - if ! grep '^[larch5]' pacman.conf &>/dev/null; then - if [ -d larchrepo ]; then -@@ -199,12 +198,13 @@ - fi - larch5path="${larch5path}/${sysarch}" - fi -- sed "/\[testing\]/ i \ --[larch5]\n\ --Server = ${larch5path}\n\ --#larch5---\n" -i pacman.conf -+ #sed "/\[testing\]/ i \ -+ echo "[larch5] " >> pacman.conf -+ echo "Server = ${larch5path}" >> pacman.conf - fi - -+ -+ - if ! which pacman &>/dev/null; then - if ! [ -x ${startdir}/pacman ]; then - echo "ERROR: Couldn't find pacman executable" -@@ -218,15 +218,19 @@ - - # Use build version of pacman.conf in live system, without [larch5] repository. - # This can be overwritten by a pacman.conf in the profile's overlay. -+ - rm -f ${INSTLDIR}/etc/pacman.conf --if [ -f pacman.conf.0 ]; then -+if [ -f ${PROFILE}/pacman.conf ]; then - # This file should be used in preference to pacman.conf - it is created by - # larch-setup on non-Arch systems before commenting out the 'Include' lines. -- cp pacman.conf.0 ${INSTLDIR}/etc/pacman.conf -+ cp ${PROFILE}/pacman.conf ${INSTLDIR}/etc/pacman.conf - else - sed '/^\[larch5\]/,/^ *$/ d' <pacman.conf >${INSTLDIR}/etc/pacman.conf - fi - -+cachepacs -a ${PROFILE}/cache_packs $INPACSO -d ${INSTLDIR} -+ -+ - # Generate glibc locales - if [ -f ${PROFILE}/locale.gen ]; then - echo -@@ -248,6 +252,15 @@ - - echo "// ${APP} finished installation of Arch system" - echo "//" -+ -+#run script to post-process the new installation -+if [ -f ${PROFILE}/post-process.sh ] -+then -+ ${PROFILE}/post-process.sh ${INSTLDIR} ${PROFILE} -+ echo ${PROFILE}/post-process.sh ${INSTLDIR} ${PROFILE} -+fi -+ -+ - if [ -z "${NOLIVE}" ]; then - # Get live CD build functions - . ${LARCHDATA}/buildlive diff --git a/build_tools/clarch/larch/run/jams.larch.patch b/build_tools/clarch/larch/run/jams.larch.patch deleted file mode 100644 index 9a96d45..0000000 --- a/build_tools/clarch/larch/run/jams.larch.patch +++ /dev/null @@ -1,110 +0,0 @@ -Only in run/: cachepacs -diff -wU4 run.orig/inpacs run/inpacs ---- run.orig/inpacs 2008-08-10 10:51:15.000000000 +0000 -+++ run/inpacs 2008-08-29 02:29:31.000000000 +0000 -@@ -115,9 +115,9 @@ - VETOFILE="" - # Source directory for pacman database directories: - DBDIR="" - # pacman executable: --PACMANX="pacman" -+PACMANX="pacman -f" - # pacman configuration file - PACMANK="/etc/pacman.conf" - - checkfile () -diff -wU4 run.orig/mklarch run/mklarch ---- run.orig/mklarch 2008-08-10 10:51:15.000000000 +0000 -+++ run/mklarch 2008-08-29 02:29:45.000000000 +0000 -@@ -22,9 +22,8 @@ - # - #---------------------------------------------------------------------------- - # 2008.06.22 - -- - # directory to use for building the CD - the installation root - # It must have LOTS of space, ~ 4GB for a 700MB CD - INSTLDIR=/home/larchroot - -@@ -162,8 +161,9 @@ - fi - - for fd in $( ls -A ${INSTLDIR} ); do - rm -rf ${INSTLDIR}/${fd} -+#lookforme - done - mkdir -p ${LARCHBUILD} - - ############### Call 'inpacs' to do the installation -@@ -186,9 +186,8 @@ - exit 1 - fi - fi - INPACSO="${INPACSO} -k pacman.conf" -- - # If necessary add the larch repository to pacman.conf - if ! grep '^[larch5]' pacman.conf &>/dev/null; then - if [ -d larchrepo ]; then - larch5path="file://$( readlink -f larchrepo )" -@@ -198,14 +197,15 @@ - sysarch="i686" - fi - larch5path="${larch5path}/${sysarch}" - fi -- sed "/\[testing\]/ i \ --[larch5]\n\ --Server = ${larch5path}\n\ --#larch5---\n" -i pacman.conf -+ #sed "/\[testing\]/ i \ -+ echo "[larch5] " >> pacman.conf -+ echo "Server = ${larch5path}" >> pacman.conf - fi - -+ -+ - if ! which pacman &>/dev/null; then - if ! [ -x ${startdir}/pacman ]; then - echo "ERROR: Couldn't find pacman executable" - exit 1 -@@ -217,17 +217,21 @@ - if [ $? -ne 0 ]; then exit 1; fi - - # Use build version of pacman.conf in live system, without [larch5] repository. - # This can be overwritten by a pacman.conf in the profile's overlay. -+ - rm -f ${INSTLDIR}/etc/pacman.conf --if [ -f pacman.conf.0 ]; then -+if [ -f ${PROFILE}/pacman.conf ]; then - # This file should be used in preference to pacman.conf - it is created by - # larch-setup on non-Arch systems before commenting out the 'Include' lines. -- cp pacman.conf.0 ${INSTLDIR}/etc/pacman.conf -+ cp ${PROFILE}/pacman.conf ${INSTLDIR}/etc/pacman.conf - else - sed '/^\[larch5\]/,/^ *$/ d' <pacman.conf >${INSTLDIR}/etc/pacman.conf - fi - -+cachepacs -a ${PROFILE}/cache_packs $INPACSO -d ${INSTLDIR} -+ -+ - # Generate glibc locales - if [ -f ${PROFILE}/locale.gen ]; then - echo - echo "********** Generating locales **********" -@@ -247,8 +251,17 @@ - fi - - echo "// ${APP} finished installation of Arch system" - echo "//" -+ -+#run script to post-process the new installation -+if [ -f ${PROFILE}/post-process.sh ] -+then -+ ${PROFILE}/post-process.sh ${INSTLDIR} ${PROFILE} -+ echo ${PROFILE}/post-process.sh ${INSTLDIR} ${PROFILE} -+fi -+ -+ - if [ -z "${NOLIVE}" ]; then - # Get live CD build functions - . ${LARCHDATA}/buildlive - mklive diff --git a/build_tools/clarch/larch/run/larchify b/build_tools/clarch/larch/run/larchify deleted file mode 100755 index abc0c6d..0000000 --- a/build_tools/clarch/larch/run/larchify +++ /dev/null @@ -1,140 +0,0 @@ -#! /bin/bash -# -# larchify -# -# 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 -# -#---------------------------------------------------------------------------- -# 2008.02.13 - -# Default target directory: -INSTLDIR=larchroot - -APP="$( basename $0 )" -# Get path to larch base directory, via the location of this script -FULLPATH="$( readlink -f $0 )" -SCRIPTDIR="$( dirname ${FULLPATH} )" -LARCHDATA="$( dirname ${SCRIPTDIR} )" - -startdir=$( pwd ) -# cd to ensure that the following test works even if '.' is in PATH -cd / -apppath="$( which ${APP} 2>/dev/null )" -if [ $? -ne 0 ] || [ "${apppath}" != "${FULLPATH}" ]; then - PATH=${SCRIPTDIR}:${PATH} -fi -cd ${startdir} - -usage () { - echo - echo "Usage:" - echo " ${APP} -h # Show this message" - echo - echo " ${APP} [-irugf] [-p <profile directory>] [<target directory>]" - echo - echo " -p Use the 'profile' in the given directory." - echo " The default is the directory 'profile' in the" - echo " current directory, if it exists. A build without" - echo " a profile is also, in principle, possible." - echo " -i Only rebuild iso (or install to USB-stick)," - echo " don't regenerate CD data" - echo - echo " -r Reuse old system and home sqfs" - echo " -u Don't build iso, but install to USB-stick instead" - echo " -g Use GRUB bootloader (default is isolinux/syslinux)" - echo - echo " -f No interaction. (not recommended)" - echo " The script will just plough straight on and destroy" - echo " your file-system without first asking." - echo - echo "${APP} builds a larch live CD / live USB-stick from the Arch Linux" - echo "installation in <target directory>. The default target directory" - echo "(which can also be a symlink) is 'larchroot' in the current" - echo "working directory." - echo - echo "A profile is a directory containing all the necessary" - echo "configuration details for a larch build. See documentation" - echo "and examples." - echo - exit -} - -PROFILE="" -DONTASK="" -USB="" -GRUB="" -REISO="" -REBUILD="" -REUSE="" -while getopts ":p:irugf" Option -do - case ${Option} in - p ) PROFILE="$( readlink -f ${OPTARG} )" ;; - i ) REISO="-i" ;; - r ) REUSE="-r" ;; - u ) USB="-u" ;; - g ) GRUB="-g" ;; - f ) DONTASK="-f" ;; - * ) usage ;; - esac -done -shift $((${OPTIND} - 1)) -if [ -n "$1" ]; then - INSTLDIR="$1" -fi - -if [ -d "${INSTLDIR}" ]; then - if [ "${INSTLDIR}" = "/" ]; then - INSTLDIR="" - else - INSTLDIR=$( readlink -f ${INSTLDIR} ) - fi -else - echo "ERROR: no target directory supplied" - usage -fi -LARCHBUILD="${INSTLDIR}/.larch" - -if [ -z "${PROFILE}" ]; then - if [ -d ${startdir}/profile ]; then - PROFILE=${startdir}/profile - elif [ -z "${DONTASK}" ]; then - read -p "// Build without a profile? [y/N]: " ans - # Await yes or no - if [ -z "$( echo ${ans} | grep '^ *[yY]' )" ]; then exit 0; fi - echo - fi -elif ! [ -d ${PROFILE} ]; then - echo "ERROR: profile '${PROFILE}' not found " - usage -fi - -# test if the script is started by root user. If not, exit -if [ $UID -ne 0 ]; then - echo "Only root can run ${APP}"; exit 1 -fi - -# Get live CD build functions -. ${LARCHDATA}/buildlive - -if [ -n "${REISO}" ]; then - buildiso -else - mklive -fi diff --git a/build_tools/clarch/larch/run/mklarch b/build_tools/clarch/larch/run/mklarch deleted file mode 100755 index 236088a..0000000 --- a/build_tools/clarch/larch/run/mklarch +++ /dev/null @@ -1,284 +0,0 @@ -#! /bin/bash -# -# mklarch -# -# 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 -# -#---------------------------------------------------------------------------- -# 2008.06.22 - -# directory to use for building the CD - the installation root -# It must have LOTS of space, ~ 4GB for a 700MB CD -INSTLDIR=/home/larchroot - -# Default path to larch5 repositories (architecture is sub-directory) -larch5path="ftp://ftp.berlios.de/pub/larch/larch5.3" - -APP=$( basename $0 ) -# Get path to larch base directory, via the location of this script -FULLPATH=$( readlink -f $0 ) -SCRIPTDIR=$( dirname ${FULLPATH} ) -LARCHDATA=$( dirname ${SCRIPTDIR} ) - -startdir=$( pwd ) -# cd to ensure that the following test works even if '.' is in PATH -cd / -apppath="$( which ${APP} 2>/dev/null )" -if [ $? -ne 0 ] || [ "${apppath}" != "${FULLPATH}" ]; then - PATH=${SCRIPTDIR}:${PATH} -fi -cd ${startdir} - -usage () { - echo - echo "Usage:" - echo " ${APP} -h # Show this message" - echo - echo " ${APP} -a [-f] [-p <profile directory>]" - echo " [-c <package cache directory>]" - echo " [-y <path to pacman database directories>]" - echo " [<build directory>]" - echo - echo " ${APP} [-ugf] [-p <profile directory>]" - echo " [-c <package cache directory>]" - echo " [-y <path to pacman database directories>]" - echo " [<build directory>]" - echo - echo " -a Stop after installing Arch system (don't build live system)." - echo - echo " -p Use the 'profile' in the given directory." - echo - echo " -c Use an alternative package cache directory" - echo " (default is /var/cache/pacman/pkg, on host)" - echo " -y Use existing pacman package database instead" - echo " of performing 'pacman -Sy'." - echo - echo " -u Don't build iso, but install to USB-stick instead" - echo " -g Use GRUB bootloader (default is isolinux/syslinux)" - echo - echo " -f No interaction. (not recommended)" - echo " The script will just plough straight on and destroy" - echo " your file-system without first asking." - echo - echo "${APP} is the master script for the larch live CD / live USB-stick" - echo "builder." - echo - echo "<build directory> is the directory in which all the building will" - echo "be done, by default '${INSTLDIR}'" - echo - echo "A profile is a directory containing all the necessary" - echo "configuration details for a larch build. See documentation" - echo "and examples." - echo - echo "If you want to rebuild a live system without reinstalling it" - echo "(for example if you make minor changes to the profile which" - echo "don't affect the packages, or if you want a USB-stick instead" - echo "of a CD, or if writing to the USB-stick failed for some reason)" - echo "you should look at the 'larchify' script - run it with the '-h'" - echo "option for usage notes." - echo - exit -} - -pROFILE="" -DONTASK="" -NOLIVE="" -USB="" -GRUB="" -PKGCACHE=/var/cache/pacman/pkg -# Options to 'inpacs': -INPACSO="" -while getopts ":p:ac:y:ugf" Option -do - case ${Option} in - p ) PROFILE="$( readlink -f ${OPTARG} )" ;; - a ) NOLIVE="-a" ;; - c ) PKGCACHE="$( readlink -f ${OPTARG} )" ;; - y ) INPACSO="${INPACSO} -y $( readlink -f ${OPTARG} )" ;; - u ) USB="-u" ;; - g ) GRUB="-g" ;; - f ) DONTASK="-f" ;; - * ) usage ;; - esac -done -shift $((${OPTIND} - 1)) -if ! [ -d "${PKGCACHE}" ]; then - echo "Creating package cache: ${PKGCACHE}" - if ! mkdir -p "${PKGCACHE}"; then - echo "ERROR: Couldn't create ${PKGCACHE}" - exit 1 - fi -fi -INPACSO="${INPACSO} -c ${PKGCACHE}" - -if [ -n "$1" ]; then - INSTLDIR=$1 -fi -LARCHBUILD="${INSTLDIR}/.larch" - -if [ -z "${PROFILE}" ]; then - PROFILE=${startdir}/profile -fi -if ! [ -f ${PROFILE}/addedpacks ]; then - echo "ERROR: no 'addedpacks' in profile '${PROFILE}'" - exit 1 -fi - -# test if the script is started by root user. If not, exit -if [ $UID -ne 0 ]; then - echo "Only root can run ${APP}"; exit 1 -fi - -echo "//" -echo "// **********************************************************" -echo "// This will delete EVERYTHING under" -echo "//" -echo "// ${INSTLDIR}" -echo "//" - -if [ -z "${DONTASK}" ]; then - echo "// I really mean it ... Are you sure you want to do this?" - echo "// **********************************************************" - # Await yes or no - read -p "// [y/N]: " ans - if [ -z "$( echo ${ans} | grep '^ *[yY]' )" ]; then exit 0; fi -fi - -for fd in $( ls -A ${INSTLDIR} ); do - rm -rf ${INSTLDIR}/${fd} -#lookforme -done -mkdir -p ${LARCHBUILD} - -############### Call 'inpacs' to do the installation - -if [ -f ${PROFILE}/basepacks ]; then - INPACSO="${INPACSO} -b ${PROFILE}/basepacks" -fi - -if [ -f ${PROFILE}/baseveto ]; then - INPACSO="${INPACSO} -x ${PROFILE}/baseveto" -fi - -if [ -f ${PROFILE}/pacman.conf ]; then - cp ${PROFILE}/pacman.conf . -elif ! [ -f pacman.conf ]; then - if [ -f /etc/pacman.conf ]; then - cp /etc/pacman.conf . - else - echo "ERROR: Couldn't find pacman.conf" - exit 1 - fi -fi -INPACSO="${INPACSO} -k pacman.conf" -if [ x = y ] -then -# If necessary add the larch repository to pacman.conf -if ! grep '^[larch5]' pacman.conf &>/dev/null; then - if [ -d larchrepo ]; then - larch5path="file://$( readlink -f larchrepo )" - else - sysarch="$( uname -m )" - if [ "${sysarch}" != "x86_64" ]; then - sysarch="i686" - fi - larch5path="${larch5path}/${sysarch}" - fi - #sed "/\[testing\]/ i \ - echo "[larch5] " >> pacman.conf - echo "Server = ${larch5path}" >> pacman.conf -fi - -fi - -if ! which pacman &>/dev/null; then - if ! [ -x ${startdir}/pacman ]; then - echo "ERROR: Couldn't find pacman executable" - exit 1 - fi - INPACSO="${INPACSO} -P ${startdir}/pacman" -fi -echo "checking for pre_process.sh" -if [ -f ${PROFILE}/pre-process.sh ] -then - echo "Running pre-process script" - cd ${PROFILE} - ./pre-process.sh - cd - - -else - echo "No pre_process" -fi - -inpacs -a ${PROFILE}/addedpacks ${INPACSO} ${INSTLDIR} -if [ $? -ne 0 ]; then exit 1; fi - -# Use build version of pacman.conf in live system, without [larch5] repository. -# This can be overwritten by a pacman.conf in the profile's overlay. - -rm -f ${INSTLDIR}/etc/pacman.conf -if [ -f ${PROFILE}/pacman.conf ]; then - # This file should be used in preference to pacman.conf - it is created by - # larch-setup on non-Arch systems before commenting out the 'Include' lines. - cp ${PROFILE}/pacman.conf ${INSTLDIR}/etc/pacman.conf -else - sed '/^\[larch5\]/,/^ *$/ d' <pacman.conf >${INSTLDIR}/etc/pacman.conf -fi - -cachepacs -a ${PROFILE}/cache_packs $INPACSO -d ${INSTLDIR} -if [ $? -ne 0 ] -then - exit 1 -fi - -# Generate glibc locales -if [ -f ${PROFILE}/locale.gen ]; then - echo - echo "********** Generating locales **********" - echo - cat ${PROFILE}/locale.gen ${INSTLDIR}/etc/locale.gen >${INSTLDIR}/etc/locale.gen_new - mv -f ${INSTLDIR}/etc/locale.gen_new ${INSTLDIR}/etc/locale.gen - chroot ${INSTLDIR} usr/sbin/locale-gen -fi - -# Generate ssh keys -ssh_init ${INSTLDIR} - -# Set up a symlink to the installation for 'larchify' -rm -f larchroot && ln -sf ${INSTLDIR} ${startdir}/larchroot -if [ $? -ne 0 ]; then - echo "WARNING: Couldn't create 'larchroot' symlink" -fi - -echo "// ${APP} finished installation of Arch system" -echo "//" - -#run script to post-process the new installation -if [ -f ${PROFILE}/post-process.sh ] -then - ${PROFILE}/post-process.sh ${INSTLDIR} ${PROFILE} - echo ${PROFILE}/post-process.sh ${INSTLDIR} ${PROFILE} -fi - - -if [ -z "${NOLIVE}" ]; then - # Get live CD build functions - . ${LARCHDATA}/buildlive - mklive -fi diff --git a/build_tools/clarch/larch/run/myusbboot b/build_tools/clarch/larch/run/myusbboot deleted file mode 100644 index 29f2084..0000000 --- a/build_tools/clarch/larch/run/myusbboot +++ /dev/null @@ -1,89 +0,0 @@ -#! /bin/bash -# -# usbboot -# -# 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 -# -#---------------------------------------------------------------------------- -# 2008.06.22 - -APP="$( basename $0 )" - -usage () { - echo - echo "Usage:" - echo " ${APP} [<Arch installation root directory>]" - echo - echo " Prepare a bootable USB-stick from a larch build." - echo " If no Arch directory is given, '/' is assumed." - exit 1 -} - -if [ -n "$1" ]; then - AINSTALL="$( readlink -f $1 )" -else - AINSTALL="" -fi -CDDATA=${AINSTALL}/.larch/cd - -if [ ! -f ${CDDATA}/system.sqf ]; then - echo "ERROR: ${CDDATA} does not contain larch cd data" - usage -fi -if [ ! -f ${CDDATA}/isolinux/isolinux.cfg ]; then - echo "ERROR: isolinux data not in ${CDDATA}/isolinux" - exit 1 -fi - -if ! [ -f ${AINSTALL}/usr/bin/syslinux ]; then - echo "ERROR: syslinux not found -" - echo " it must be installed on live system" - return 1 -fi - -# test if the script is started by root user. If not, exit -if [ $UID -ne 0 ]; then - echo "Only root can run ${APP}"; exit 1 -fi - - -echo "// Copying the boot sector" -dd if=${AINSTALL}/usr/lib/syslinux/mbr.bin of=${dev} - -echo "// Copying the files" -stick=/tmp/usbstick -if [ -f ${stick} ] -then - rm -rf ${stick} -fi - mkdir -p ${stick} - -if [ $? != 0 ]; then - echo "ERROR: Failed to mount device, quitting" - exit 3 -fi - -cp -a ${CDDATA}/* ${stick} -mv ${stick}/isolinux ${stick}/syslinux -mv ${stick}/syslinux/isolinux.cfg ${stick}/syslinux/syslinux.cfg -rm -f ${stick}/syslinux/isolinux* - -echo "//" -echo "// Done!" -echo "// If all went well your usb stick should now be a bootable larch system" diff --git a/build_tools/clarch/larch/run/ssh_init b/build_tools/clarch/larch/run/ssh_init deleted file mode 100755 index 66a716f..0000000 --- a/build_tools/clarch/larch/run/ssh_init +++ /dev/null @@ -1,18 +0,0 @@ -#! /bin/sh - -DESTDIR=$1 -echo -echo "************** Generating ssh keys to ${DESTDIR}/etc/ssh **************" -echo -# ssh initialisation - done here so that it doesn't need to be done -# when the cd boots -if [ -x ${DESTDIR}/usr/sbin/sshd ]; then - # Do it on the newly built system, in case the host doesn't have ssh - mount --bind /dev ${DESTDIR}/dev - chroot ${DESTDIR} bin/sh -c "{\ - /usr/bin/ssh-keygen -t rsa1 -N \"\" -f /etc/ssh/ssh_host_key >/dev/null;\ - /usr/bin/ssh-keygen -t rsa -N \"\" -f /etc/ssh/ssh_host_rsa_key >/dev/null;\ - /usr/bin/ssh-keygen -t dsa -N \"\" -f /etc/ssh/ssh_host_dsa_key >/dev/null;\ - }" - umount ${DESTDIR}/dev -fi diff --git a/build_tools/clarch/larch/run/usb2bootiso b/build_tools/clarch/larch/run/usb2bootiso deleted file mode 100755 index cb2190a..0000000 --- a/build_tools/clarch/larch/run/usb2bootiso +++ /dev/null @@ -1,66 +0,0 @@ -#!/bin/bash - -# usb2bootiso - -# For use after a completed run of mklarch or larchify which has produced -# a larch USB-stick with syslinux boot. It will generate a boot iso for -# use on computers which can't boot from the USB-stick. - -# $1 is the base of the 'livified' Arch installation (larchroot) -# If no path is given, a directory (or symlink) 'larchroot' in the -# working directory will be used. -#=================================================================== -# 2008.06.22 - -APP="$( basename $0 )" -# Get path to larch base directory, via the location of this script -FULLPATH="$( readlink -f $0 )" -SCRIPTDIR="$( dirname ${FULLPATH} )" - -mkiso () -{ - mkisofs -r -l $1 \ - -no-emul-boot -boot-load-size 4 -boot-info-table \ - -input-charset=UTF-8 \ - -publisher "designed by gradgrind, licence: GPL" \ - -A "larch-5" \ - -o "bootcd.iso" "${CDDATA}" - - if [ $? -eq 0 ]; then - echo "// Your ISO has been created as bootcd.iso" - else - echo "ERROR: iso build failed" 1>&2 - return 1 - fi -} - -if [ -z "$1" ]; then - if [ -d larchroot ]; then - MP="$( readlink -f larchroot )" - else - echo "Must pass Arch root directory as argument" - exit 1 - fi -else - if ! [ -d $1 ]; then - echo "$1 is not a directory" - exit 1 - fi - MP="$( readlink -f $1 )" -fi - -CDDATA=$( pwd )/bootcd -rm -rf ${CDDATA} -mkdir -p ${CDDATA}/isolinux - -if ! cp -r ${MP}/.larch/cd/isolinux ${CDDATA} &>/dev/null; then - echo "No larch boot files found at ${MP}/.larch/cd/isolinux" - exit 1 -fi -if ! cp ${MP}/usr/lib/syslinux/isolinux.bin ${CDDATA}/isolinux; then - echo "Couldn't find isolinux.bin" - exit 1 -fi - -mkiso "-b isolinux/isolinux.bin -c isolinux/isolinux.boot" - diff --git a/build_tools/clarch/larch/run/usb2iso b/build_tools/clarch/larch/run/usb2iso deleted file mode 100755 index 885f726..0000000 --- a/build_tools/clarch/larch/run/usb2iso +++ /dev/null @@ -1,78 +0,0 @@ -#!/bin/sh - -# usb2iso - -# For use (especially) after a usb-stick larch system (syslinux based -# only at the moment) has been modified, this will generate a bootable -# iso from it. - -# WARNING - a lot of space is needed as the whole cd content must be copied. - -# $1 is the mount point of the usb-stick. If none use /.livesys/medium -# (i.e. assuming it is being run from a larch system). -# The iso will be generated in the current working directory. -#=================================================================== -# 2008.04.21 - -ISOLINUXBIN=/usr/lib/syslinux/isolinux.bin - -APP="$( basename $0 )" -# Get path to larch base directory, via the location of this script -FULLPATH="$( readlink -f $0 )" -SCRIPTDIR="$( dirname ${FULLPATH} )" - -mkiso () -{ - mkisofs -r -l $1 \ - -no-emul-boot -boot-load-size 4 -boot-info-table \ - -input-charset=UTF-8 \ - -publisher "designed by gradgrind, licence: GPL" \ - -A "larch-5" \ - -o "livecd.iso" "${CDDATA}" - - if [ $? -eq 0 ]; then - echo "// Your ISO has been created as livecd.iso" - else - echo "ERROR: iso build failed" 1>&2 - return 1 - fi -} - -if [ -z "$1" ]; then - if [ -d /.livesys/medium/larch ]; then - MP=/.livesys/medium - else - echo "Must pass usb-stick mount-point as argument" - exit 1 - fi -else - if ! [ -d "$1/larch" ]; then - echo "No larch system found at $1" - exit 1 - fi - MP="$( readlink -f $1 )" -fi - -CDDATA=$( pwd )/bootcd -rm -rf ${CDDATA} -mkdir -p ${CDDATA} - -if ! cp -r ${MP}/syslinux ${CDDATA} &>/dev/null; then - echo "No larch boot files found at ${MP}/syslinux" - exit 1 -fi -mv ${CDDATA}/syslinux ${CDDATA}/isolinux -mv ${CDDATA}/isolinux/syslinux.cfg ${CDDATA}/isolinux/isolinux.cfg -if ! cp ${ISOLINUXBIN} ${CDDATA}/isolinux; then - echo "Couldn't find isolinux.bin" - exit 1 -fi - -echo "Copying data, this could take a while" -cp -r ${MP}/larch ${CDDATA} -cp ${MP}/system.sqf ${CDDATA} -cp ${MP}/mods.sqf ${CDDATA} -cp ${MP}/overlay.ovl ${CDDATA} - -mkiso "-b isolinux/isolinux.bin -c isolinux/isolinux.boot" - diff --git a/build_tools/clarch/larch/run/usbboot b/build_tools/clarch/larch/run/usbboot deleted file mode 100755 index dd7f3fe..0000000 --- a/build_tools/clarch/larch/run/usbboot +++ /dev/null @@ -1,100 +0,0 @@ -#! /bin/bash -# -# usbboot -# -# 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 -# -#---------------------------------------------------------------------------- -# 2008.06.22 - -APP="$( basename $0 )" - -usage () { - echo - echo "Usage:" - echo " ${APP} [<Arch installation root directory>]" - echo - echo " Prepare a bootable USB-stick from a larch build." - echo " If no Arch directory is given, '/' is assumed." - exit 1 -} - -if [ -n "$1" ]; then - AINSTALL="$( readlink -f $1 )" -else - AINSTALL="" -fi - -STARTDIR=${2} - -CDDATA=${AINSTALL}/.larch/cd - -if [ ! -f ${CDDATA}/system.sqf ]; then - echo "ERROR: ${CDDATA} does not contain larch cd data" - usage -fi -if [ ! -f ${CDDATA}/isolinux/isolinux.cfg ]; then - echo "ERROR: isolinux data not in ${CDDATA}/isolinux" - exit 1 -fi - -if ! [ -f ${AINSTALL}/usr/bin/syslinux ]; then - echo "ERROR: syslinux not found -" - echo " it must be installed on live system" - return 1 -fi - -# test if the script is started by root user. If not, exit -if [ $UID -ne 0 ]; then - echo "Only root can run ${APP}"; exit 1 -fi - - - - -echo "// Copying the files" -stick=/tmp/usbstick -if [ -d ${stick} ] -then - echo "removing $stick" - rm -rf ${stick} -fi - mkdir -p ${stick} - -if [ $? != 0 ]; then - echo "ERROR: Failed to mount device, quitting" - exit 3 -fi - -cp -a ${CDDATA}/* ${stick} - - -mv ${stick}/isolinux ${stick}/syslinux -mv ${stick}/syslinux/isolinux.cfg ${stick}/syslinux/syslinux.cfg -rm -f ${stick}/syslinux/isolinux* - -#copy in the important stuff -cp -a ${AINSTALL}/usr/lib/syslinux/* ${stick}/syslinux -cp -a ${AINSTALL}/usr/bin/syslinux ${stick}/syslinux/syslinux -cp -a ${STARTDIR}/bootusb/* ${stick}/syslinux - -echo "copy ${stick}/* to a usb drive and run syslinux/bootinst.sh" - - - diff --git a/build_tools/clarch/larch/run/usbboot.orig b/build_tools/clarch/larch/run/usbboot.orig deleted file mode 100755 index b1f41b4..0000000 --- a/build_tools/clarch/larch/run/usbboot.orig +++ /dev/null @@ -1,155 +0,0 @@ -#! /bin/bash -# -# usbboot -# -# 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 -# -#---------------------------------------------------------------------------- -# 2008.06.22 - -APP="$( basename $0 )" - -usage () { - echo - echo "Usage:" - echo " ${APP} [<Arch installation root directory>]" - echo - echo " Prepare a bootable USB-stick from a larch build." - echo " If no Arch directory is given, '/' is assumed." - exit 1 -} - -if [ -n "$1" ]; then - AINSTALL="$( readlink -f $1 )" -else - AINSTALL="" -fi -CDDATA=${AINSTALL}/.larch/cd - -if [ ! -f ${CDDATA}/system.sqf ]; then - echo "ERROR: ${CDDATA} does not contain larch cd data" - usage -fi -if [ ! -f ${CDDATA}/isolinux/isolinux.cfg ]; then - echo "ERROR: isolinux data not in ${CDDATA}/isolinux" - exit 1 -fi - -if ! [ -f ${AINSTALL}/usr/bin/syslinux ]; then - echo "ERROR: syslinux not found -" - echo " it must be installed on live system" - return 1 -fi - -echo "//" -echo "// **********************************************************" -echo "//" -echo "// ${APP} will prepare a bootable USB stick with your" -echo "// previously prepared larch data from ${CDDATA}" -echo "//" -echo "// Please insert your USB stick, which should already be" -echo "// appropriately partitioned." -echo "//" -echo "// **********************************************************" -echo "//" - -# test if the script is started by root user. If not, exit -if [ $UID -ne 0 ]; then - echo "Only root can run ${APP}"; exit 1 -fi - -echo "// Do you want to continue?" -# Await yes or no -read -p "// [y/N]: " ans -if [ -z "`echo ${ans} | grep '^ *[yY]'`" ]; then exit 2; fi - -echo "//" -echo "// Enter the number of the partition you wish to use (0 to quit):" - -devices=/tmp/devices$$ -:> ${devices} -i=0 -sfdisk -d | grep "/dev/sd[a-z][1-4] " | grep -v "Id= [05]" | \ - sed "s|\(.*\):.*size=\( *[0-9]*\).*|\1 \2|" | while read device sectors; do - - i=$(( ${i} + 1 )) - echo "${device}" >>${devices} - echo "// ${i}: ${device} $(( ${sectors} / 2048 )) MiB" -done - -while true; do - read -p "// Device: " d - if [ "${d}" -eq "0" ]; then exit 1; fi - i=0 - { while read device; do - i=$(( ${i} + 1 )) - if [ "${d}" -eq "${i}" ]; then break 2; fi - done } <${devices} -done - -rm ${devices} - -echo "//" -read -p "// \"${device}\" will now be prepared. Continue? [y/N]: " ans -if [ -z "`echo ${ans} | grep '^ *[yY]'`" ]; then exit 1; fi - -echo "//" -echo "// Formatting ${device} (vfat)" -dev=${device:0:8} -part=${device:8} -sfdisk ${dev} -N${part} <<EOF -,,0e,* -EOF - -dd if=/dev/zero of=${device} bs=512 count=1 -mkfs.vfat ${device} - -echo "// Copying the boot sector" -dd if=${AINSTALL}/usr/lib/syslinux/mbr.bin of=${dev} - -echo "// Copying the files" -stick=/tmp/mnt -mkdir -p ${stick} -umount ${device} &>/dev/null -mount ${device} ${stick} -if [ $? != 0 ]; then - echo "ERROR: Failed to mount device, quitting" - exit 3 -fi -cp -a ${CDDATA}/* ${stick} -mv ${stick}/isolinux ${stick}/syslinux -mv ${stick}/syslinux/isolinux.cfg ${stick}/syslinux/syslinux.cfg -rm -f ${stick}/syslinux/isolinux* - -umount ${stick} - -echo "// Running syslinux" -if [ -n "${AINSTALL}" ]; then - mount --bind /dev ${AINSTALL}/dev - mount --bind /proc ${AINSTALL}/proc - chroot ${AINSTALL} syslinux ${device} - umount ${AINSTALL}/dev - umount ${AINSTALL}/proc -else - syslinux ${device} -fi - -echo "//" -echo "// Done!" -echo "// If all went well your usb stick should now be a bootable larch system" diff --git a/build_tools/clarch/larch/run/usbboot_grub b/build_tools/clarch/larch/run/usbboot_grub deleted file mode 100755 index 2f837d5..0000000 --- a/build_tools/clarch/larch/run/usbboot_grub +++ /dev/null @@ -1,180 +0,0 @@ -#! /bin/bash -# -# usbboot_grub -# -# 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 -# -#---------------------------------------------------------------------------- -# 2008.06.22 - -APP="$( basename $0 )" - -usage () { - echo - echo "Usage:" - echo " ${APP} [<Arch installation root directory>]" - echo - echo " Prepare a bootable USB-stick from a larch build." - echo " If no Arch directory is given, '/' is assumed." - exit 1 -} - -if [ -n "$1" ]; then - AINSTALL="$( readlink -f $1 )" - if [ ! -x ${AINSTALL}/sbin/grub ]; then - echo "ERROR: ${AINSTALL}/sbin/grub not found" - exit 1 - fi -else - AINSTALL="" - if ! which grub &>/dev/null; then - echo "ERROR: grub not found" - exit 1 - fi -fi -CDDATA=${AINSTALL}/.larch/cd - -if [ ! -f ${CDDATA}/system.sqf ]; then - echo "ERROR: ${CDDATA} does not contain larch cd data" - usage -fi -if [ ! -f ${CDDATA}/boot/grub/stage1 ]; then - echo "ERROR: grub data not in ${CDDATA}/boot/grub" - exit 1 -fi - -echo "//" -echo "// **********************************************************" -echo "//" -echo "// ${APP} will prepare a bootable USB stick with your" -echo "// previously prepared larch data from ${CDDATA}" -echo "//" -echo "// As an alternative it might render your system unbootable." -echo "// If that thought disturbs you please don't continue." -echo "//" -echo "// This program is DANGEROUS - you have been warned!!!" -echo "//" -echo "// If you are too cool to be concerned about the warnings," -echo "// please insert your USB stick, which should already be" -echo "// appropriately partitioned." -echo "//" -echo "// **********************************************************" -echo "//" - -# test if the script is started by root user. If not, exit -if [ $UID -ne 0 ]; then - echo "Only root can run ${APP}"; exit 1 -fi - -echo "//" -echo "// Enter the number of the partition you wish to use (0 to quit):" - -devices=/tmp/devices$$ -:> ${devices} -i=0 -sfdisk -d | grep "/dev/sd[a-z][1-4] " | grep -v "Id= [05]" | \ - sed "s|\(.*\):.*size=\( *[0-9]*\).*|\1 \2|" | while read device sectors; do - - i=$(( ${i} + 1 )) - echo "${device}" >>${devices} - echo "// ${i}: ${device} $(( ${sectors} / 2048 )) MiB" -done - -while true; do - read -p "// Device: " d - if [ "${d}" -eq "0" ]; then exit 1; fi - i=0 - { while read device; do - i=$(( ${i} + 1 )) - if [ "${d}" -eq "${i}" ]; then break 2; fi - done } <${devices} -done - -rm ${devices} - -echo "//" -read -p "// \"${device}\" will now be prepared. Continue? [y/N]: " ans -if [ -z "`echo ${ans} | grep '^ *[yY]'`" ]; then exit 1; fi - -echo "//" -echo "// Formatting ${device} (ext2)" -dev=${device:0:8} -part=${device:8} -sfdisk ${dev} -N${part} <<EOF -,,L,* -EOF - -mke2fs ${device} - -echo "// Copying the files" -stick=/tmp/mnt -mkdir -p ${stick} -umount ${device} &>/dev/null -mount ${device} ${stick} -if [ $? != 0 ]; then - echo "ERROR: Failed to mount device, quitting" - exit 3 -fi -cp -a ${CDDATA}/* ${stick} -umount ${stick} - -# 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 ${AINSTALL}${dmap} | grep "${dev}" | cut -f1 | tr -d "()" )" -gpart=$(( ${part} - 1 )) -echo "// Installing GRUB to (${gdev}), root (${gdev},${gpart})" -} - -dmap=/tmp/device.map -rm -f ${AINSTALL}${dmap} -if [ -n "${AINSTALL}" ]; then - # First try to get a device mapping - mount --bind /dev ${AINSTALL}/dev - echo "quit" | chroot ${AINSTALL} 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 ${AINSTALL} grub --batch <<EOT -root (${gdev},${gpart}) -setup (${gdev}) -quit -EOT - umount ${AINSTALL}/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 ${AINSTALL}${dmap} - -echo "//" -echo "// Done!" -echo "// If all went well your usb stick should now be a bootable larch system" diff --git a/build_tools/clarch/larch/run/xpack b/build_tools/clarch/larch/run/xpack deleted file mode 100755 index 0ebe158..0000000 --- a/build_tools/clarch/larch/run/xpack +++ /dev/null @@ -1,122 +0,0 @@ -#! /bin/bash -# -# xpack - simple tool for handling self-extracting archives -# -# Author: Michael Towers <gradgrind[at]online[dot]de> -# -# xpack 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. -# -# xpack 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 xpack; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -# -#---------------------------------------------------------------------------- -# -# version 1.1 - -# This script serves both as packer and extracter, according to the name used -# to invoke it. When invoked as 'xpack', it will copy itself to the archive -# file (passed on the command line) and then append a tar.gz archive of the -# source directory (passed on the command line). E.g. -# ./xpack path/to/archive xarchive -# To extract the archive, simply run the resulting archive file, passing a -# directory into which it should be unpacked on the command line. E.g. -# ./xarchive newpath/to/directory -# or, bash xarchive newpath/to/directory - -if [ "$( basename "$0" )" != "xpack" ]; then - # extract archive - if [ ! -d "$1" ]; then - echo "ERROR: Destination directory not found" - echo "Usage:" - echo " ${APP} <directory> - Unpack this archive to <directory> (which must exist)" - exit 1 - fi - -# The following lines allow the implementation of the '-r' option to xpack. -# The version of this script which is copied to the generated archive file will, -# in that case, have the '#+#' removed. -#+# # test if the script is started by root user. If not, exit -#+# if [ $UID -ne 0 ]; then -#+# echo "Only root can run $0"; exit 1 -#+# fi - - echo "Extracting archive to $1" - let "SKIP = $( grep --binary-files=text -n -m 1 "^#__ARCHIVE__" "$0" | cut -d ':' -f 1 ) + 1" - - tail -n +$SKIP "$0" | tar -xzC "$1" - exit 0 -fi - -usage () { - echo - echo "Usage:" - echo " ${APP} [-dr] <directory> <archive file>" - echo " Create self-extracting archive from <directory>" - echo - echo " -d Don't include the base directory" - echo " -r Require root permissions for extracting" - echo - exit 1 -} - -NOBASE="" -ROOT="" -while getopts ":dr" Option -do - case ${Option} in - d ) NOBASE="-d" ;; - r ) ROOT="-r" ;; - * ) usage ;; - esac -done -shift $((${OPTIND} - 1)) - -if [ ! -d "$1" ]; then - echo "ERROR: Source directory not found" - usage -fi - -if [ -e "$2" ]; then - echo "ERROR: Destination file exists" - usage -fi - -cp $0 $2 -if [ $? -ne 0 ]; then - echo "ERROR: Cannot write to destination file" - usage -fi - -if [ -n "${ROOT}" ]; then - if [ $UID -ne 0 ]; then - echo "Only root can use the -r opton" - exit 1 - fi - sed -i 's|^#+#||g' $2 -fi - -DIR="$( readlink -f $1 )" -BASE="." -if [ -z "${NOBASE}" ]; then - DIR="$( dirname ${DIR} )" - if [ $? -ne 0 ]; then echo "dirname -f ${DIR} ... failed"; usage; fi - BASE="$( basename $1 )" -fi - -# tar to standard output adds a load of nulls to the output, -# which is a bit untidy and results in warnings, so do it this way: -tar czf $2_ -C ${DIR} ${BASE} -cat $2_ >> $2 -rm $2_ - -# DO NOT delete the next line, which MUST be the last line of 'xpack' -#__ARCHIVE__ |