diff options
| author | Lars Müller | 2006-12-18 10:44:45 +0100 |
|---|---|---|
| committer | Lars Müller | 2006-12-18 10:44:45 +0100 |
| commit | 269aaa3780cbcf672756b19c359e941a04611194 (patch) | |
| tree | 455975abf73f5c18603a03c5e0c09854bf686c4f | |
| parent | Improved "watchdog" for auto power off, if stage3 does not complete (diff) | |
| download | core-269aaa3780cbcf672756b19c359e941a04611194.tar.gz core-269aaa3780cbcf672756b19c359e941a04611194.tar.xz core-269aaa3780cbcf672756b19c359e941a04611194.zip | |
Move installation of prerequired files and packages to separate
functions.
git-svn-id: http://svn.openslx.org/svn/openslx/trunk@565 95ad53e4-c205-0410-b2fa-d234c58c8868
| -rwxr-xr-x | installer/slxossetup | 129 |
1 files changed, 70 insertions, 59 deletions
diff --git a/installer/slxossetup b/installer/slxossetup index 25bfa523..0a771a36 100755 --- a/installer/slxossetup +++ b/installer/slxossetup @@ -45,6 +45,74 @@ for suffix in "" local ${SLX_SYSTEM_VARIANTNAME}; do . "${SLX_SYSTEM_CONFIG_PATH}/settings${suffix:+.$suffix}" done +function install_prereq_file +{ + # Install prerequired files + if test -d "${SLX_SYSTEM_CONFIG_PATH}/prereqfiles"; then + cp -a "${SLX_SYSTEM_CONFIG_PATH}"/prereqfiles/* "${SLX_STAGE1_PATH}" + find "${SLX_STAGE1_PATH}" -type d -name .svn -print0 | \ + xargs -0 rm -rf + fi + test -x "${SLX_SYSTEM_CONFIG_PATH}"/scripts/postprereq && \ + "${SLX_SYSTEM_CONFIG_PATH}"/scripts/postprereq "${SLX_STAGE1_PATH}" + + for file in ${SLX_INSTALL_FAKE_FILE}; do + dir="${file%/*}" + test -d "${SLX_STAGE1_PATH}/${dir}" || \ + mkdir -p "${SLX_STAGE1_PATH}/${dir}" + touch "${SLX_STAGE1_PATH}/${file}" + done +} + +function install_prereq_packages() +{ + test "${SLX_BASE_PREREQ_PACKAGES}" || \ + return + + # Download and unpack prerequired packages before any package installation + SLX_PACKAGE_PATH="${SLX_METADATA_PATH}/packages" + TMP_DIR=$( mktemp -d "${SLX_METADATA_PATH}/packages.XXXXXXXX") + if test $? -ne 0; then + echo "$0: Warning, can not create temp package download directory! " + echo " Using ${SLX_PACKAGE_DOWNLOAD_PATH} instead. " + SLX_PACKAGE_DOWNLOAD_PATH="${SLX_PACKAGE_PATH}" + else + SLX_PACKAGE_DOWNLOAD_PATH="${TMP_DIR}" + fi + test -d "${SLX_PACKAGE_DOWNLOAD_PATH}" || \ + mkdir -p "${SLX_PACKAGE_DOWNLOAD_PATH}" + pushd "${SLX_PACKAGE_DOWNLOAD_PATH}" >/dev/null + smart --data-dir="${SLX_METADATA_PATH}" \ + download \ + "${SLX_BASE_PREREQ_PACKAGES}" + popd >/dev/null + + test -d "${SLX_STAGE1_PATH}" || \ + mkdir -p "${SLX_STAGE1_PATH}" + pushd "${SLX_STAGE1_PATH}" >/dev/null + for package in ${SLX_BASE_PREREQ_PACKAGES}; do + rpm2cpio ${SLX_PACKAGE_DOWNLOAD_PATH}/${package}-*.rpm | \ + cpio -i --make-directories + done + + # Move package from temp to package dir. + if test "${SLX_PACKAGE_DOWNLOAD_PATH}" != "${SLX_PACKAGE_PATH}"; then + test -d "${SLX_PACKAGE_PATH}" || \ + mkdir -p "${SLX_PACKAGE_PATH}" + mv "${SLX_PACKAGE_DOWNLOAD_PATH}/"*.rpm "${SLX_PACKAGE_PATH}/" + rmdir "${SLX_PACKAGE_DOWNLOAD_PATH}" + fi + + # Cleanup etc to prevent .rpnnew files + if test "${SLX_BASE_PREREQ_CLEANUP_PATH}"; then + for path in ${SLX_BASE_PREREQ_CLEANUP_PATH}; do + find "${SLX_STAGE1_PATH}/${path}" -type f -print0 | \ + xargs -0 rm -f + done + fi + popd >/dev/null +} + function slxossetup_smart() { SLX_METADATA_PATH="${SLX_PRIVATE_PATH}/metadata/${SLX_SYSTEM_NAME}" @@ -129,66 +197,9 @@ function slxossetup_smart() smart --data-dir="${SLX_METADATA_PATH}" \ update - if test "${SLX_BASE_PREREQ_PACKAGES}"; then - # Download and unpack prerequired packages before any package installation - SLX_PACKAGE_PATH="${SLX_METADATA_PATH}/packages" - TMP_DIR=$( mktemp -d "${SLX_METADATA_PATH}/packages.XXXXXXXX") - if test $? -ne 0; then - echo "$0: Warning, can not create temp package download directory! " - echo " Using ${SLX_PACKAGE_DOWNLOAD_PATH} instead. " - SLX_PACKAGE_DOWNLOAD_PATH="${SLX_PACKAGE_PATH}" - else - SLX_PACKAGE_DOWNLOAD_PATH="${TMP_DIR}" - fi - test -d "${SLX_PACKAGE_DOWNLOAD_PATH}" || \ - mkdir -p "${SLX_PACKAGE_DOWNLOAD_PATH}" - pushd "${SLX_PACKAGE_DOWNLOAD_PATH}" >/dev/null - smart --data-dir="${SLX_METADATA_PATH}" \ - download \ - "${SLX_BASE_PREREQ_PACKAGES}" - popd >/dev/null - - test -d "${SLX_STAGE1_PATH}" || \ - mkdir -p "${SLX_STAGE1_PATH}" - pushd "${SLX_STAGE1_PATH}" >/dev/null - for package in ${SLX_BASE_PREREQ_PACKAGES}; do - rpm2cpio ${SLX_PACKAGE_DOWNLOAD_PATH}/${package}-*.rpm | \ - cpio -i --make-directories - done - - # Move package from temp to package dir. - if test "${SLX_PACKAGE_DOWNLOAD_PATH}" != "${SLX_PACKAGE_PATH}"; then - test -d "${SLX_PACKAGE_PATH}" || \ - mkdir -p "${SLX_PACKAGE_PATH}" - mv "${SLX_PACKAGE_DOWNLOAD_PATH}/"*.rpm "${SLX_PACKAGE_PATH}/" - rmdir "${SLX_PACKAGE_DOWNLOAD_PATH}" - fi + install_prereq_packages - # Cleanup etc to prevent .rpnnew files - if test "${SLX_BASE_PREREQ_CLEANUP_PATH}"; then - for path in ${SLX_BASE_PREREQ_CLEANUP_PATH}; do - find "${SLX_STAGE1_PATH}/${path}" -type f -print0 | \ - xargs -0 rm -f - done - fi - popd >/dev/null - fi - - # Install prerequired files - if test -d "${SLX_SYSTEM_CONFIG_PATH}/prereqfiles"; then - cp -a "${SLX_SYSTEM_CONFIG_PATH}"/prereqfiles/* "${SLX_STAGE1_PATH}" - find "${SLX_STAGE1_PATH}" -type d -name .svn -print0 | \ - xargs -0 rm -rf - fi - test -x "${SLX_SYSTEM_CONFIG_PATH}"/scripts/postprereq && \ - "${SLX_SYSTEM_CONFIG_PATH}"/scripts/postprereq "${SLX_STAGE1_PATH}" - - for file in ${SLX_INSTALL_FAKE_FILE}; do - dir="${file%/*}" - test -d "${SLX_STAGE1_PATH}/${dir}" || \ - mkdir -p "${SLX_STAGE1_PATH}/${dir}" - touch "${SLX_STAGE1_PATH}/${file}" - done + install_prereq_file for mountpoint in ${SLX_INSTALL_BIND_MOUNT}; do test -d "${SLX_STAGE1_PATH}/${mountpoint}" || \ |
