summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--examples/deployconfig-dieter42
-rw-r--r--src/core/procedures/automatic1
-rw-r--r--src/core/procedures/base13
3 files changed, 53 insertions, 3 deletions
diff --git a/examples/deployconfig-dieter b/examples/deployconfig-dieter
index c626a64..9e80dc4 100644
--- a/examples/deployconfig-dieter
+++ b/examples/deployconfig-dieter
@@ -1,8 +1,13 @@
#!/bin/bash
# An example config for the deployment procedure
-#TODO: install ruby-gems too
+# TODO: install ruby-gems too
+# TODO * dieter/automatic: wait for yaourt --config fix ( http://forums.archlinux.fr/post23171.html#23171 )
+# TODO:* dieter/automatic: put config files from svn in place first, so that if a package has an update, it can do it's thing.
+depend_module yaourt
+
+var_RUNTIME_REPOSITORIES=(archlinuxfr "Server = http://repo.archlinux.fr/$var_ARCH")
var_RUNTIME_PACKAGES="svn"
DEPLOY_CLASS=desktop-a7n8x
@@ -23,6 +28,19 @@ worker_fetch_configs ()
}
+worker_runtime_packages ()
+{
+ for pkg in $var_RUNTIME_PACKAGES
+ do
+ $PACMAN -Sy --noconfirm --needed $pkg
+ done
+
+ # We'll install packages on the target system, for that we need yaourt
+ _runtime_yaourt
+ _yaourt_replace_pacman
+}
+
+
worker_package_list ()
{
$SVN export $SVN_BASE/ddm-configs/$DEPLOY_CLASS/trunk/package-list $var_PKG_FILE || die_error "Could not export package list!"
@@ -55,4 +73,24 @@ worker_configure_home ()
{
#TODO checkout from svn
true
-} \ No newline at end of file
+}
+
+
+
+# See http://wiki.archlinux.org/index.php/Yaourt
+
+worker_install_packages () #pre_ / post_ callbacks would be useful here
+{
+ PACMAN_BACKUP=$PACMAN
+ PACMAN_TARGET_BACKUP=$PACMAN_TARGET
+ PACMAN=${PACMAN//pacman/yaourt}
+ PACMAN_TARGET=${PACMAN_TARGET//pacman/yaourt}
+
+ target_prepare_pacman core
+ [ -z "$TARGET_PACKAGES" ] && die_error "No packages listed to be installed!"
+ installpkg
+
+ PACMAN=$PACMAN_BACKUP
+ PACMAN_TARGET=$PACMAN_TARGET_BACKUP
+
+}
diff --git a/src/core/procedures/automatic b/src/core/procedures/automatic
index dc879ee..bb78437 100644
--- a/src/core/procedures/automatic
+++ b/src/core/procedures/automatic
@@ -5,7 +5,6 @@
# In theory, the only manual thing should maybe be configuring the runtime network and putting the configfile in place
# TODO: I don't know if you can do non-interactive dm_crypt stuff.. maybe by pulling luks keyfiles from svn/git/..?
-depend_module yaourt
depend_procedure core base
var_OPTS_STRING="c:"
diff --git a/src/core/procedures/base b/src/core/procedures/base
index 1c1d640..4fd32c8 100644
--- a/src/core/procedures/base
+++ b/src/core/procedures/base
@@ -3,6 +3,7 @@
#TODO: make this profile work on itself, eg some stuff from inheriting profiles should be moved in, stuff implemented etc
var_DEFAULTFS="/boot:32:ext2:+ swap:256:swap /:7500:ext3 /home:*:ext3"
var_TARGET_DIR="/mnt" # When overriding this, do _not_ add a trailing /. It's not needed and maybe you could even break something
+var_RUNTIME_REPOSITORIES= # array like this ('name1' 'location of repo 1' ['name2' 'location of repo2',..])
var_RUNTIME_PACKAGES=
var_PKG_FILE=$RUNTIME_DIR/package-list # not used by default in base/interactive. can be used by custom procedures or profiles for the automatic procedure
var_MIRRORLIST="/etc/pacman.d/mirrorlist"
@@ -17,6 +18,7 @@ phase_preparation=(\
sysprep \
select_source \
runtime_network \
+ runtime_repositories \
runtime_packages)
phase_basics=(\
@@ -77,6 +79,17 @@ worker_runtime_network ()
}
+worker_runtime_repositories ()
+{
+ for i in `seq 0 $((${#var_RUNTIME_REPOSITORIES[@]}/2-1))`
+ do
+ repo=${var_RUNTIME_REPOSITORIES[$(($i*2))]}
+ location=${var_RUNTIME_REPOSITORIES[$(($i*2+1))]}
+ list_pacman_repos runtime | grep -q $repo || add_pacman_repo runtime $repo $location
+ done
+}
+
+
worker_runtime_packages ()
{
for pkg in $var_RUNTIME_PACKAGES