aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2011-08-19 14:10:34 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2011-08-19 14:12:02 +0000
commit3a7d91b32171a6c80ae26f199355d0f7db95eb7f (patch)
tree902a774095ec0253d776cbe583f44151a1b85dfc
parent8d795d1760f28bedfe605515c7c770389768b5fb (diff)
downloadalpine-conf-3a7d91b32171a6c80ae26f199355d0f7db95eb7f.tar.bz2
alpine-conf-3a7d91b32171a6c80ae26f199355d0f7db95eb7f.tar.xz
setup-lbu: new app
This is to replace setup-apklbu in the long run.
-rw-r--r--.gitignore1
-rw-r--r--Makefile1
-rwxr-xr-xsetup-lbu.in123
3 files changed, 125 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e0b22b1..2a0780c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,6 +14,7 @@ setup-dns
setup-hostname
setup-interfaces
setup-keymap
+setup-lbu
setup-mta
setup-timezone
setup-xorg-base
diff --git a/Makefile b/Makefile
index e0bb4be..1a716f1 100644
--- a/Makefile
+++ b/Makefile
@@ -22,6 +22,7 @@ SBIN_FILES := lbu\
setup-hostname\
setup-interfaces\
setup-keymap\
+ setup-lbu\
setup-mta\
setup-acf\
setup-bootable\
diff --git a/setup-lbu.in b/setup-lbu.in
new file mode 100755
index 0000000..edf5e76
--- /dev/null
+++ b/setup-lbu.in
@@ -0,0 +1,123 @@
+#!/bin/sh
+
+PREFIX=
+
+. "$PREFIX/lib/libalpine.sh"
+
+usage() {
+ cat <<__EOF__
+usage: setup-lbu [-hq] [MEDIA]
+
+Setup lbu media settings.
+
+MEDIA is optional mountpoint under /media
+
+options:
+ -h Show this help
+ -q Quietly pick best suggestion. Only prompts user if unsure.
+
+__EOF__
+ exit 1
+}
+
+get_mnt_line() {
+ mntpoint="$1"
+ mnttab="$2"
+ awk "\$2 == \"$mntpoint\" {print \$0}" "$mnttab"
+}
+
+is_mounted() {
+ test -n "$(get_mnt_line $1 /proc/mounts)"
+}
+
+is_in_fstab() {
+ test -n "$(get_mnt_line $1 /etc/fstab)"
+}
+
+set_media() {
+ local media="${1%/}" # strip trailing /
+ local mnt=/media/$media
+
+ if [ -d "$media" ] && [ "${media#/media/}" != "$media" ]; then
+ mnt="$media"
+ media=${mnt#/media/}
+ fi
+ if ! [ -d "$mnt" ]; then
+ echo "$mnt: not a directory" >&2
+ exit 1
+ fi
+
+ # set LBU_MEDIA in /etc/lbu/lbu.conf
+ sed -i -e "/^\#\?[[:space:]]*LBU_MEDIA=.*/s/.*/LBU_MEDIA=$media/" \
+ /etc/lbu/lbu.conf
+ if ! egrep -q '^LBU_MEDIA=' /etc/lbu/lbu.conf; then
+ echo "LBU_MEDIA=$media" >> /etc/lbu/lbu.conf
+ fi
+
+ # append to fstab if its missing
+ if ! is_in_fstab $mnt && is_mounted $mnt; then
+ get_mnt_line "$mnt" /proc/mounts >> /etc/fstab
+ fi
+
+ # hack in case we have alpine_dev moutned on /media/usbdisk but
+ # lbu is stored on /media/usb
+ # Otherwise we get issues when we do lbu commit.
+ if [ "$media" = "usb" ] && is_mounted /media/usbdisk; then
+ mount --move /media/usbdisk /media/usb
+ elif [ "$media" = "usbdisk" ] && is_mounted /media/usb; then
+ mount --move /media/usb /media/usbdisk
+ fi
+}
+
+while getopts "hq" opt; do
+ case $opt in
+ h) usage;;
+ q) quiet=1;;
+ esac
+done
+shift $(($OPTIND - 1))
+
+# check if MEDIA option was given
+if [ -n "$1" ]; then
+ set_media "$1"
+ exit
+fi
+
+alternatives=
+suggestion="none"
+for dir in /media/*; do
+ [ -d "$dir" ] || continue
+ [ "$dir" = "/media/cdrom" ] && continue
+ alternatives="$alternatives ${dir#/media/}"
+ if is_mounted $dir; then
+ suggestion=${dir#/media/}
+ [ -n "$quiet" ] && media=$suggestion
+ fi
+done
+
+# if nothing is mounted (or boot from cdrom)
+usbmnt=$(awk '$1 == "/dev/usbdisk" {print $2}' /proc/mounts)
+if [ -z "$suggestion" ] && [ -n "$usbmnt" ]; then
+ suggestion=${usbmnt#/media/}
+ if [ -n "$quiet" ] && [ -e /dev/usbdisk ]; then
+ media=$suggestion
+ fi
+fi
+
+while [ -z "$media" ]; do
+ echo "Where would you like to store configs? ($alternatives or none) [$suggestion] "
+ default_read media $suggestion
+ if [ "$media" = "none" ] || [ -d "/media/$media" ]; then
+ break
+ fi
+ echo "/media/$media is not a directory. Please try again."
+ media=
+done
+
+if [ "$media" = "none" ]; then
+ exit 0
+fi
+
+set_media "$media"
+
+