summaryrefslogtreecommitdiffstats
path: root/build_tools/l7
diff options
context:
space:
mode:
authorCecil Hugh Watson <knoppmyth@gmail.com>2010-08-28 21:23:23 (GMT)
committerCecil Hugh Watson <knoppmyth@gmail.com>2010-08-28 21:23:23 (GMT)
commitf83117d46d8fc1f6192783371a68607a192c3276 (patch)
tree21bf30aeb943fe6cb23eb9c62a0ba899de2af0d7 /build_tools/l7
parent69a0137390be9816d5ec5dc9e81d48817a817758 (diff)
downloadlinhes_dev-f83117d46d8fc1f6192783371a68607a192c3276.zip
Larch 7
Diffstat (limited to 'build_tools/l7')
-rwxr-xr-xbuild_tools/l7/build_all2
-rwxr-xr-xbuild_tools/l7/cachepacs140
l---------build_tools/l7/larch1
-rw-r--r--build_tools/l7/larch-7.2.18-1-any.pkg.tar.gzbin0 -> 483374 bytes
l---------build_tools/l7/larch-archin1
-rwxr-xr-xbuild_tools/l7/larch-archin.orig378
l---------build_tools/l7/larch-boot_iso1
l---------build_tools/l7/larch-larchify1
-rwxr-xr-xbuild_tools/l7/larch-larchify.orig588
l---------build_tools/l7/larch-live_iso1
l---------build_tools/l7/larch-live_part1
-rw-r--r--build_tools/l7/larch-profiles-7.2.0-1-any.pkg.tar.gzbin0 -> 40510 bytes
-rw-r--r--build_tools/l7/larch-setup127
-rwxr-xr-xbuild_tools/l7/larch0/buildscripts/cleardir15
-rwxr-xr-xbuild_tools/l7/larch0/buildscripts/larch-hosts28
-rwxr-xr-xbuild_tools/l7/larch0/buildscripts/larch-locales45
-rwxr-xr-xbuild_tools/l7/larch0/buildscripts/larch-mbr-grub63
-rw-r--r--build_tools/l7/larch0/cd-root/boot0/memtestbin0 -> 99784 bytes
-rw-r--r--build_tools/l7/larch0/cd-root/grub0/colors.lst36
-rw-r--r--build_tools/l7/larch0/cd-root/grub0/help.lst16
-rw-r--r--build_tools/l7/larch0/cd-root/grub0/help/bootexisting.txt23
-rw-r--r--build_tools/l7/larch0/cd-root/grub0/help/contrib.txt23
-rw-r--r--build_tools/l7/larch0/cd-root/grub0/keyboards.lst111
-rw-r--r--build_tools/l7/larch0/cd-root/grub0/menu.lst25
-rw-r--r--build_tools/l7/larch0/cd-root/grub0/more.lst30
-rw-r--r--build_tools/l7/larch0/cd-root/grub0/settings.lst13
-rw-r--r--build_tools/l7/larch0/cd-root/grub0/tools.lst14
-rw-r--r--build_tools/l7/larch0/cd-root/isolinux0/bkgd.jpgbin0 -> 96992 bytes
-rw-r--r--build_tools/l7/larch0/cd-root/isolinux0/isolinux.cfg13
-rwxr-xr-xbuild_tools/l7/larch0/cli/archin.py378
-rw-r--r--build_tools/l7/larch0/cli/backend.py444
-rwxr-xr-xbuild_tools/l7/larch0/cli/boot_iso.py154
-rw-r--r--build_tools/l7/larch0/cli/config.py92
-rwxr-xr-xbuild_tools/l7/larch0/cli/larchify.py588
-rwxr-xr-xbuild_tools/l7/larch0/cli/live_iso.py154
-rwxr-xr-xbuild_tools/l7/larch0/cli/live_part.py221
-rw-r--r--build_tools/l7/larch0/cli/media_common.py450
-rwxr-xr-xbuild_tools/l7/larch0/cli/test.py42
-rw-r--r--build_tools/l7/larch0/cli/userinfo.py93
-rw-r--r--build_tools/l7/larch0/data/bootlines20
-rw-r--r--build_tools/l7/larch0/data/locales7
-rw-r--r--build_tools/l7/larch0/data/pacman.conf84
-rw-r--r--build_tools/l7/larch0/data/pacman.conf.repos14
-rw-r--r--build_tools/l7/larch0/data/requiredpacks32
-rw-r--r--build_tools/l7/larch0/docs/BUGS_TODO52
-rw-r--r--build_tools/l7/larch0/docs/COPYING339
-rw-r--r--build_tools/l7/larch0/docs/LICENCE16
-rw-r--r--build_tools/l7/larch0/docs/README23
-rw-r--r--build_tools/l7/larch0/docs/html/archin.html241
-rw-r--r--build_tools/l7/larch0/docs/html/css/larchdocs.css13
-rw-r--r--build_tools/l7/larch0/docs/html/css/screen/bark.jpgbin0 -> 57289 bytes
-rw-r--r--build_tools/l7/larch0/docs/html/css/screen/basemod.css162
-rw-r--r--build_tools/l7/larch0/docs/html/css/screen/bottom-left.pngbin0 -> 1187 bytes
-rw-r--r--build_tools/l7/larch0/docs/html/css/screen/bottom-right.pngbin0 -> 421 bytes
-rw-r--r--build_tools/l7/larch0/docs/html/css/screen/green-gradient200.jpgbin0 -> 383 bytes
-rw-r--r--build_tools/l7/larch0/docs/html/css/screen/larch150x.pngbin0 -> 18626 bytes
-rw-r--r--build_tools/l7/larch0/docs/html/css/screen/nav_vlist.css74
-rw-r--r--build_tools/l7/larch0/docs/html/css/screen/top-left.pngbin0 -> 1150 bytes
-rw-r--r--build_tools/l7/larch0/docs/html/css/screen/top-right.pngbin0 -> 467 bytes
-rw-r--r--build_tools/l7/larch0/docs/html/css/yaml/core/base.css277
-rw-r--r--build_tools/l7/larch0/docs/html/css/yaml/core/iehacks.css355
-rw-r--r--build_tools/l7/larch0/docs/html/css/yaml/core/js/webkit-focusfix.js40
-rw-r--r--build_tools/l7/larch0/docs/html/css/yaml/core/slim_base.css6
-rw-r--r--build_tools/l7/larch0/docs/html/css/yaml/core/slim_iehacks.css6
-rw-r--r--build_tools/l7/larch0/docs/html/css/yaml/print/print_100_draft.css75
-rw-r--r--build_tools/l7/larch0/docs/html/css/yaml/screen/content_default.css221
-rw-r--r--build_tools/l7/larch0/docs/html/gui_installation.html162
-rw-r--r--build_tools/l7/larch0/docs/html/gui_larchify.html187
-rw-r--r--build_tools/l7/larch0/docs/html/gui_medium.html220
-rw-r--r--build_tools/l7/larch0/docs/html/gui_mediumprofile.html117
-rw-r--r--build_tools/l7/larch0/docs/html/gui_project_settings.html168
-rw-r--r--build_tools/l7/larch0/docs/html/index.html151
-rw-r--r--build_tools/l7/larch0/docs/html/larch_features.html180
-rw-r--r--build_tools/l7/larch0/docs/html/larch_gui.html82
-rw-r--r--build_tools/l7/larch0/docs/html/larch_intro.html316
-rw-r--r--build_tools/l7/larch0/docs/html/larch_live_system.html220
-rw-r--r--build_tools/l7/larch0/docs/html/larch_quick-console.html136
-rw-r--r--build_tools/l7/larch0/docs/html/larch_quick.html148
-rw-r--r--build_tools/l7/larch0/docs/html/larch_rebuild.html100
-rw-r--r--build_tools/l7/larch0/docs/html/larch_running.html216
-rw-r--r--build_tools/l7/larch0/docs/html/larch_sessionsave.html191
-rw-r--r--build_tools/l7/larch0/docs/html/larch_ssh.html212
-rw-r--r--build_tools/l7/larch0/docs/html/larchify.html151
-rw-r--r--build_tools/l7/larch0/docs/html/medium.html142
-rw-r--r--build_tools/l7/larch0/docs/html/profiles.html326
-rw-r--r--build_tools/l7/larch0/gui/MEDIUM_README14
-rwxr-xr-xbuild_tools/l7/larch0/gui/askpass.py35
-rw-r--r--build_tools/l7/larch0/gui/controller.py466
-rwxr-xr-xbuild_tools/l7/larch0/gui/dirview.py172
-rwxr-xr-xbuild_tools/l7/larch0/gui/dispatcher.py108
-rw-r--r--build_tools/l7/larch0/gui/front/docviewer.py68
-rw-r--r--build_tools/l7/larch0/gui/front/editor.py115
-rw-r--r--build_tools/l7/larch0/gui/front/logview.py94
-rw-r--r--build_tools/l7/larch0/gui/front/mainwindow.py132
-rw-r--r--build_tools/l7/larch0/gui/front/page_installation.py188
-rw-r--r--build_tools/l7/larch0/gui/front/page_larchify.py248
-rw-r--r--build_tools/l7/larch0/gui/front/page_medium.py320
-rw-r--r--build_tools/l7/larch0/gui/front/page_mediumprofile.py87
-rw-r--r--build_tools/l7/larch0/gui/front/page_project.py203
-rw-r--r--build_tools/l7/larch0/gui/front/uim.py1327
-rwxr-xr-xbuild_tools/l7/larch0/gui/larch.py38
-rw-r--r--build_tools/l7/larch0/gui/layouts/docviewer.uim72
-rw-r--r--build_tools/l7/larch0/gui/layouts/editor.uim92
-rw-r--r--build_tools/l7/larch0/gui/layouts/logger.uim57
-rw-r--r--build_tools/l7/larch0/gui/layouts/page_installation.uim179
-rw-r--r--build_tools/l7/larch0/gui/layouts/page_larchify.uim177
-rw-r--r--build_tools/l7/larch0/gui/layouts/page_main.uim101
-rw-r--r--build_tools/l7/larch0/gui/layouts/page_medium.uim271
-rw-r--r--build_tools/l7/larch0/gui/layouts/page_mediumprofile.uim99
-rw-r--r--build_tools/l7/larch0/gui/layouts/page_project.uim181
-rw-r--r--build_tools/l7/larch0/gui/layouts/progress.uim64
-rw-r--r--build_tools/l7/larch0/gui/project.py428
-rw-r--r--build_tools/l7/larch0/i18n/ca/LC_MESSAGES/ca.po1218
-rw-r--r--build_tools/l7/larch0/i18n/ca/LC_MESSAGES/larch.mobin0 -> 26196 bytes
-rw-r--r--build_tools/l7/larch0/i18n/de/LC_MESSAGES/de.po1588
-rw-r--r--build_tools/l7/larch0/i18n/de/LC_MESSAGES/larch.mobin0 -> 35393 bytes
-rwxr-xr-xbuild_tools/l7/larch0/i18n/i18n.py108
-rwxr-xr-xbuild_tools/l7/larch0/i18n/i18n2.py51
-rw-r--r--build_tools/l7/larch0/i18n/larch.pot1462
-rw-r--r--build_tools/l7/larch0/i18n/zh/LC_MESSAGES/larch.mobin0 -> 24434 bytes
-rw-r--r--build_tools/l7/larch0/i18n/zh/LC_MESSAGES/zh.po1231
-rw-r--r--build_tools/l7/larch0/images/larch.pngbin0 -> 55248 bytes
-rw-r--r--build_tools/l7/larch0/images/larch80.pngbin0 -> 6930 bytes
-rw-r--r--build_tools/l7/larch0/images/larchicon.pngbin0 -> 5175 bytes
-rw-r--r--build_tools/l7/larch0/profiles/default/addedpacks0
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/addedpacks223
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/cache_packs59
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/cd-root/isolinux/debugsub.cfg38
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/cd-root/isolinux/hardsub.cfg57
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/cd-root/isolinux/isolinux.cfg37
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/cd-root/isolinux/vbg.jpgbin0 -> 44071 bytes
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/cd-root/larch/copy/actions.rc3
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/cd-root/larch/copy/autologin1
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/cd-root/larch/copy/bash_profile1
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/cd-root/larch/copy/larch063
-rwxr-xr-xbuild_tools/l7/larch0/profiles/i686-testing-local/create_overlay.sh1
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/locale.gen5
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/mkinitcpio.conf54
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/overlay/home/mythtv/.fluxbox/apps2
-rwxr-xr-xbuild_tools/l7/larch0/profiles/i686-testing-local/overlay/home/mythtv/.xinitrc19
-rwxr-xr-xbuild_tools/l7/larch0/profiles/i686-testing-local/pacman.conf62
-rwxr-xr-xbuild_tools/l7/larch0/profiles/i686-testing-local/post-process.sh17
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/post_process/home/mythtv/.bash_profile1
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/post_process/home/mythtv/.bashrc3
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/post_process/home/mythtv/.fluxbox/apps4
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/post_process/home/mythtv/.fluxbox/init35
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/post_process/home/mythtv/.fluxbox/menu81
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/post_process/home/mythtv/.fluxbox/menuconfig65
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/post_process/home/mythtv/.fluxbox/wallpaper.pngbin0 -> 119287 bytes
-rwxr-xr-xbuild_tools/l7/larch0/profiles/i686-testing-local/post_process/home/mythtv/.xinitrc18
-rwxr-xr-xbuild_tools/l7/larch0/profiles/i686-testing-local/post_process/home/mythtv/.xsession10
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/post_process/hosts.allow8
-rwxr-xr-xbuild_tools/l7/larch0/profiles/i686-testing-local/post_process/hosts.deny6
-rwxr-xr-xbuild_tools/l7/larch0/profiles/i686-testing-local/post_process/menu.lst60
-rwxr-xr-xbuild_tools/l7/larch0/profiles/i686-testing-local/post_process/modify_chroot.sh15
-rwxr-xr-xbuild_tools/l7/larch0/profiles/i686-testing-local/post_process/rc.conf112
-rwxr-xr-xbuild_tools/l7/larch0/profiles/i686-testing-local/post_process/rc.shutdown104
-rwxr-xr-xbuild_tools/l7/larch0/profiles/i686-testing-local/pre-process.sh8
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/rcconfx20
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/X11/xinit/startx.custom22
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/X11/xinit/xinitrc.custom4
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/X11/xorg.conf49
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/X11/xorg.conf.i81059
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/X11/xorg.conf.i810.267
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/X11/xorg.conf.vesa49
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/conf.d/dhcpcd6
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/conf.d/fbsplash.bootsteps1
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/conf.d/fbsplash.conf8
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/conf.d/fbsplash.shutdownsteps1
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/hosts.allow13
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/inittab43
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/inittab.larchsave43
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/larch-shutdown47
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/ppp/options352
-rwxr-xr-xbuild_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/rc.local93
-rwxr-xr-xbuild_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/rc.local.orig7
-rwxr-xr-xbuild_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/rc.local.shutdown7
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/skel/.bash_profile3
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/skel/.bashrc3
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/skel/.xinitrc17
-rwxr-xr-xbuild_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/skel/.xsession10
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/etc/slim.conf79
-rw-r--r--build_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/root/.fluxbox/apps2
-rwxr-xr-xbuild_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/root/LinHES-install.sh34
-rwxr-xr-xbuild_tools/l7/larch0/profiles/i686-testing-local/rootoverlay/root/startx28
-rw-r--r--build_tools/l7/larch0/profiles/l7/addedpacks226
-rw-r--r--build_tools/l7/larch0/profiles/l7/bootlines23
-rw-r--r--build_tools/l7/larch0/profiles/l7/cd-root/larch/copy/actions.rc3
-rw-r--r--build_tools/l7/larch0/profiles/l7/cd-root/larch/copy/autologin1
-rw-r--r--build_tools/l7/larch0/profiles/l7/cd-root/larch/copy/bash_profile1
-rw-r--r--build_tools/l7/larch0/profiles/l7/cd-root/larch/copy/delarch63
-rw-r--r--build_tools/l7/larch0/profiles/l7/pacman.conf.repos12
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/X11/xinit/startx.custom18
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/X11/xinit/xinitrc.custom10
-rwxr-xr-xbuild_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/X11/xinit/xorg.conf.set9
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/X11/xorg.conf.base44
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/conf.d/dhcpcd6
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/gdm/custom.conf105
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/hosts.allow13
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/inittab.larch42
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/locale.gen8
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/rc.conf92
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/rc.d/functions.d/larch-autologin7
-rwxr-xr-xbuild_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/rc.local8
-rwxr-xr-xbuild_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/rc.local.shutdown7
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.bash_profile3
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.bashrc2
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/Terminal/terminalrc89
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/Thunar/thunarrc36
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/autostart/xfce4-settings-helper-autostart.desktop3
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/autostart/xfce4-tips-autostart.desktop3
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/cpugraph-15.rc12
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/datetime-16.rc6
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/launcher-10.rc12
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/launcher-12.rc8
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/launcher-7.rc12
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/launcher-8.rc12
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/launcher-9.rc12
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/pager-2.rc4
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/panels.xml36
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/separator-11.rc2
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/separator-13.rc2
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/separator-6.rc2
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/systray-4.rc7
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/tasklist-3.rc7
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/xfce4-menu-5.rc7
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.config/xfce4/panel/xfce4-mixer-plugin-17.rc7
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.local/share/applications/xfce4-logout.desktop75
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.xinitrc2
-rwxr-xr-xbuild_tools/l7/larch0/profiles/l7/rootoverlay.orig/etc/skel/.xsession10
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.bash_profile3
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.bashrc2
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/Terminal/terminalrc89
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/Thunar/thunarrc36
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/autostart/xfce4-settings-helper-autostart.desktop3
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/autostart/xfce4-tips-autostart.desktop3
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/cpugraph-15.rc12
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/datetime-16.rc6
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/launcher-10.rc12
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/launcher-12.rc8
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/launcher-7.rc12
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/launcher-8.rc12
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/launcher-9.rc12
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/pager-2.rc4
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/panels.xml36
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/separator-11.rc2
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/separator-13.rc2
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/separator-6.rc2
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/systray-4.rc7
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/tasklist-3.rc7
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/xfce4-menu-5.rc7
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.config/xfce4/panel/xfce4-mixer-plugin-17.rc7
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.local/share/applications/xfce4-logout.desktop75
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.ssh/id_rsa.pub0
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.xinitrc2
-rwxr-xr-xbuild_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/.xsession10
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/Desktop/Install Arch Linux.desktop11
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay.orig/root/Desktop/Larch Documentation.desktop10
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay/etc/X11/xinit/startx.custom22
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay/etc/X11/xinit/xinitrc.custom4
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay/etc/X11/xorg.conf49
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay/etc/X11/xorg.conf.i81059
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay/etc/X11/xorg.conf.i810.267
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay/etc/X11/xorg.conf.vesa49
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay/etc/conf.d/dhcpcd6
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay/etc/conf.d/fbsplash.bootsteps1
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay/etc/conf.d/fbsplash.conf8
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay/etc/conf.d/fbsplash.shutdownsteps1
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay/etc/hosts.allow13
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay/etc/inittab43
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay/etc/inittab.larchsave43
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay/etc/larch-shutdown47
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay/etc/mkinitcpio.conf.larch65
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay/etc/ppp/options352
-rwxr-xr-xbuild_tools/l7/larch0/profiles/l7/rootoverlay/etc/rc.local93
-rwxr-xr-xbuild_tools/l7/larch0/profiles/l7/rootoverlay/etc/rc.local.lh693
-rwxr-xr-xbuild_tools/l7/larch0/profiles/l7/rootoverlay/etc/rc.local.orig7
-rwxr-xr-xbuild_tools/l7/larch0/profiles/l7/rootoverlay/etc/rc.local.shutdown7
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay/etc/skel/.bash_profile3
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay/etc/skel/.bashrc3
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay/etc/skel/.xinitrc17
-rwxr-xr-xbuild_tools/l7/larch0/profiles/l7/rootoverlay/etc/skel/.xsession10
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay/etc/slim.conf79
-rw-r--r--build_tools/l7/larch0/profiles/l7/rootoverlay/root/.fluxbox/apps2
-rwxr-xr-xbuild_tools/l7/larch0/profiles/l7/rootoverlay/root/LinHES-install.sh34
-rwxr-xr-xbuild_tools/l7/larch0/profiles/l7/rootoverlay/root/startx28
-rw-r--r--build_tools/l7/larch0/profiles/l7/vetopacks6
-rw-r--r--build_tools/l7/larch0/profiles/mini/addedpacks16
-rw-r--r--build_tools/l7/larch0/profiles/mini/rootoverlay/etc/conf.d/dhcpcd6
-rw-r--r--build_tools/l7/larch0/profiles/mini/rootoverlay/etc/hosts.allow13
-rw-r--r--build_tools/l7/larch0/profiles/mini/rootoverlay/etc/inittab.larch42
-rw-r--r--build_tools/l7/larch0/profiles/mini/rootoverlay/etc/locale.gen8
-rw-r--r--build_tools/l7/larch0/profiles/mini/rootoverlay/etc/ppp/options352
-rw-r--r--build_tools/l7/larch0/profiles/mini/rootoverlay/etc/rc.conf92
-rw-r--r--build_tools/l7/larch0/profiles/mini/rootoverlay/root/.bashrc2
-rw-r--r--build_tools/l7/larch0/profiles/mini/rootoverlay/root/.ssh/id_rsa.pub0
-rw-r--r--build_tools/l7/larch0/profiles/mini/vetopacks3
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/addedpacks102
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/bootlines23
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/cd-root/larch/copy/actions.rc3
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/cd-root/larch/copy/autologin1
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/cd-root/larch/copy/bash_profile1
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/cd-root/larch/copy/delarch63
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/X11/xinit/startx.custom18
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/X11/xinit/xinitrc.custom10
-rwxr-xr-xbuild_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/X11/xinit/xorg.conf.set9
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/X11/xorg.conf.base44
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/conf.d/dhcpcd6
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/gdm/custom.conf105
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/hosts.allow13
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/inittab.larch42
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/locale.gen8
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/rc.conf92
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/rc.d/functions.d/larch-autologin7
-rwxr-xr-xbuild_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/rc.local7
-rwxr-xr-xbuild_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/rc.local.shutdown7
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.bash_profile3
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.bashrc2
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/Terminal/terminalrc89
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/Thunar/thunarrc36
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/autostart/xfce4-settings-helper-autostart.desktop3
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/autostart/xfce4-tips-autostart.desktop3
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/cpugraph-15.rc12
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/datetime-16.rc6
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/launcher-10.rc12
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/launcher-12.rc12
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/launcher-13.rc12
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/launcher-18.rc12
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/launcher-19.rc12
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/launcher-21.rc12
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/launcher-7.rc12
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/launcher-8.rc12
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/launcher-9.rc12
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/pager-2.rc4
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/panels.xml55
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/separator-11.rc4
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/separator-20.rc4
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/systray-4.rc9
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/tasklist-3.rc8
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/xfce4-menu-14.rc7
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.config/xfce4/panel/xfce4-mixer-plugin-17.rc7
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.local/share/applications/xfce4-logout.desktop75
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.xinitrc2
-rwxr-xr-xbuild_tools/l7/larch0/profiles/xmaxi/rootoverlay/etc/skel/.xsession10
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.bash_profile3
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.bashrc2
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/Terminal/terminalrc89
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/Thunar/thunarrc36
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/autostart/xfce4-settings-helper-autostart.desktop3
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/autostart/xfce4-tips-autostart.desktop3
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/cpugraph-15.rc12
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/datetime-16.rc6
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/launcher-10.rc12
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/launcher-12.rc12
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/launcher-13.rc12
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/launcher-18.rc12
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/launcher-19.rc12
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/launcher-21.rc12
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/launcher-7.rc12
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/launcher-8.rc12
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/launcher-9.rc12
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/pager-2.rc4
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/panels.xml55
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/separator-11.rc4
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/separator-20.rc4
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/systray-4.rc9
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/tasklist-3.rc8
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/xfce4-menu-14.rc7
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.config/xfce4/panel/xfce4-mixer-plugin-17.rc7
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.local/share/applications/xfce4-logout.desktop75
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.ssh/id_rsa.pub0
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.xinitrc2
-rwxr-xr-xbuild_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/.xsession10
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/Desktop/Install Arch Linux.desktop11
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/rootoverlay/root/Desktop/Larch Documentation.desktop10
-rw-r--r--build_tools/l7/larch0/profiles/xmaxi/vetopacks10
-rw-r--r--build_tools/l7/larch0/profiles/xmini/addedpacks80
-rw-r--r--build_tools/l7/larch0/profiles/xmini/bootlines23
-rw-r--r--build_tools/l7/larch0/profiles/xmini/cd-root/larch/copy/actions.rc3
-rw-r--r--build_tools/l7/larch0/profiles/xmini/cd-root/larch/copy/autologin1
-rw-r--r--build_tools/l7/larch0/profiles/xmini/cd-root/larch/copy/bash_profile1
-rw-r--r--build_tools/l7/larch0/profiles/xmini/cd-root/larch/copy/delarch63
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/X11/xinit/startx.custom18
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/X11/xinit/xinitrc.custom10
-rwxr-xr-xbuild_tools/l7/larch0/profiles/xmini/rootoverlay/etc/X11/xinit/xorg.conf.set9
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/X11/xorg.conf.base44
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/conf.d/dhcpcd6
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/gdm/custom.conf105
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/hosts.allow13
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/inittab.larch42
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/locale.gen8
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/rc.conf92
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/rc.d/functions.d/larch-autologin7
-rwxr-xr-xbuild_tools/l7/larch0/profiles/xmini/rootoverlay/etc/rc.local8
-rwxr-xr-xbuild_tools/l7/larch0/profiles/xmini/rootoverlay/etc/rc.local.shutdown7
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.bash_profile3
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.bashrc2
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/Terminal/terminalrc89
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/Thunar/thunarrc36
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/autostart/xfce4-settings-helper-autostart.desktop3
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/autostart/xfce4-tips-autostart.desktop3
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/cpugraph-15.rc12
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/datetime-16.rc6
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/launcher-10.rc12
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/launcher-12.rc8
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/launcher-7.rc12
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/launcher-8.rc12
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/launcher-9.rc12
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/pager-2.rc4
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/panels.xml36
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/separator-11.rc2
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/separator-13.rc2
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/separator-6.rc2
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/systray-4.rc7
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/tasklist-3.rc7
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/xfce4-menu-5.rc7
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.config/xfce4/panel/xfce4-mixer-plugin-17.rc7
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.local/share/applications/xfce4-logout.desktop75
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.xinitrc2
-rwxr-xr-xbuild_tools/l7/larch0/profiles/xmini/rootoverlay/etc/skel/.xsession10
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.bash_profile3
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.bashrc2
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/Terminal/terminalrc89
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/Thunar/thunarrc36
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/autostart/xfce4-settings-helper-autostart.desktop3
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/autostart/xfce4-tips-autostart.desktop3
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/cpugraph-15.rc12
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/datetime-16.rc6
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/launcher-10.rc12
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/launcher-12.rc8
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/launcher-7.rc12
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/launcher-8.rc12
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/launcher-9.rc12
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/pager-2.rc4
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/panels.xml36
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/separator-11.rc2
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/separator-13.rc2
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/separator-6.rc2
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/systray-4.rc7
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/tasklist-3.rc7
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/xfce4-menu-5.rc7
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.config/xfce4/panel/xfce4-mixer-plugin-17.rc7
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.local/share/applications/xfce4-logout.desktop75
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.ssh/id_rsa.pub0
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/root/.xinitrc2
-rwxr-xr-xbuild_tools/l7/larch0/profiles/xmini/rootoverlay/root/.xsession10
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/root/Desktop/Install Arch Linux.desktop11
-rw-r--r--build_tools/l7/larch0/profiles/xmini/rootoverlay/root/Desktop/Larch Documentation.desktop10
-rw-r--r--build_tools/l7/larch0/profiles/xmini/vetopacks6
-rwxr-xr-xbuild_tools/l7/larch0/scripts/gen_repo206
-rwxr-xr-xbuild_tools/l7/larch0/scripts/repos.sh19
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
new file mode 100644
index 0000000..2409e53
--- /dev/null
+++ b/build_tools/l7/larch-7.2.18-1-any.pkg.tar.gz
Binary files differ
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
new file mode 100644
index 0000000..aeaa92f
--- /dev/null
+++ b/build_tools/l7/larch-profiles-7.2.0-1-any.pkg.tar.gz
Binary files differ
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
new file mode 100644
index 0000000..b602352
--- /dev/null
+++ b/build_tools/l7/larch0/cd-root/boot0/memtest
Binary files differ
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
new file mode 100644
index 0000000..b45b71f
--- /dev/null
+++ b/build_tools/l7/larch0/cd-root/isolinux0/bkgd.jpg
Binary files differ
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
new file mode 100644
index 0000000..5d5cc5b
--- /dev/null
+++ b/build_tools/l7/larch0/docs/html/css/screen/bark.jpg
Binary files differ
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
new file mode 100644
index 0000000..aad30da
--- /dev/null
+++ b/build_tools/l7/larch0/docs/html/css/screen/bottom-left.png
Binary files differ
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
new file mode 100644
index 0000000..2fb2fce
--- /dev/null
+++ b/build_tools/l7/larch0/docs/html/css/screen/bottom-right.png
Binary files differ
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
new file mode 100644
index 0000000..5a5bacf
--- /dev/null
+++ b/build_tools/l7/larch0/docs/html/css/screen/green-gradient200.jpg
Binary files differ
diff --git a/build_tools/l7/larch0/docs/html/css/screen/larch150x.png b/build_tools/l7/larch0/docs/html/css/screen/larch150x.png
new file mode 100644
index 0000000..3c33343
--- /dev/null
+++ b/build_tools/l7/larch0/docs/html/css/screen/larch150x.png
Binary files differ
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
new file mode 100644
index 0000000..2a66a57
--- /dev/null
+++ b/build_tools/l7/larch0/docs/html/css/screen/top-left.png
Binary files differ
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
new file mode 100644
index 0000000..c61ad6e
--- /dev/null
+++ b/build_tools/l7/larch0/docs/html/css/screen/top-right.png
Binary files differ
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
new file mode 100644
index 0000000..0d49d0f
--- /dev/null
+++ b/build_tools/l7/larch0/i18n/ca/LC_MESSAGES/larch.mo
Binary files differ
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
new file mode 100644
index 0000000..34b903e
--- /dev/null
+++ b/build_tools/l7/larch0/i18n/de/LC_MESSAGES/larch.mo
Binary files differ
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
new file mode 100644
index 0000000..a758d63
--- /dev/null
+++ b/build_tools/l7/larch0/i18n/zh/LC_MESSAGES/larch.mo
Binary files differ
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
new file mode 100644
index 0000000..6291ed8
--- /dev/null
+++ b/build_tools/l7/larch0/images/larch.png
Binary files differ
diff --git a/build_tools/l7/larch0/images/larch80.png b/build_tools/l7/larch0/images/larch80.png
new file mode 100644
index 0000000..1da4f30
--- /dev/null
+++ b/build_tools/l7/larch0/images/larch80.png
Binary files differ
diff --git a/build_tools/l7/larch0/images/larchicon.png b/build_tools/l7/larch0/images/larchicon.png
new file mode 100644
index 0000000..8e87f5d
--- /dev/null
+++ b/build_tools/l7/larch0/images/larchicon.png
Binary files differ
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
new file mode 100644
index 0000000..07d31a6
--- /dev/null
+++ b/build_tools/l7/larch0/profiles/i686-testing-local/cd-root/isolinux/vbg.jpg
Binary files differ
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
new file mode 100644
index 0000000..83da80c
--- /dev/null
+++ b/build_tools/l7/larch0/profiles/i686-testing-local/post_process/home/mythtv/.fluxbox/wallpaper.png
Binary files differ
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