From: Michael Tremer Date: Sat, 31 Oct 2009 18:37:51 +0000 (+0100) Subject: naoki: Decompress already built packages. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7cfd59ee6eda796d5a970e2ba16e3da1f1a1f2c1;p=ipfire-3.x.git naoki: Decompress already built packages. --- diff --git a/make.sh b/make.sh index c55dd14b8..a145af75c 100755 --- a/make.sh +++ b/make.sh @@ -57,9 +57,19 @@ function package() { find) find_package $@ ;; + is_built) + if package_is_built $(find_package $@); then + echo "Package is built." + else + echo "Package is NOT built." + fi + ;; list) package_list ;; + packages) + package_packages $(find_package $@) + ;; profile|info) package_profile $(find_package $@) ;; @@ -71,7 +81,7 @@ function package() { case "${action}" in package|pkg) - package $@e + package $@ ;; toolchain) TOOLCHAIN=1 diff --git a/src/pakfire/decompressor b/src/pakfire/decompressor index b3ddf9e01..667d0c6d0 100755 --- a/src/pakfire/decompressor +++ b/src/pakfire/decompressor @@ -55,6 +55,6 @@ FILES=$(for i in $FILES; do echo $i; done | sort -u) for file in $FILES; do echo "Extracting $file..." - cpio --extract --quiet --to-stdout data.img < $file | \ + cpio --extract --quiet -H newc --to-stdout data.img < $file | \ tar --extract --xz -C ${ROOT} done diff --git a/tools/common-package-functions b/tools/common-package-functions index 845eef4a7..c6bb4f89f 100644 --- a/tools/common-package-functions +++ b/tools/common-package-functions @@ -189,7 +189,7 @@ function package_dependencies() { } function package_packages() { - package_get ${1} PKG_PACKAGES + package_get ${1} PKG_PACKAGES_FILES } function package_maintainer() { @@ -218,8 +218,8 @@ function package_is_built() { local package=$(find_package ${1}) local file - for file in package_packages ${package}; do - if [ ! -e "${file}" ]; then + for file in $(package_packages ${package}); do + if [ ! -e "${DIR_PACKAGES}/${file}" ]; then return 1 fi done @@ -243,7 +243,11 @@ function dependencies_resolve() { ret="${ret} ${dependencies} $(dependencies_resolve ${dependencies})" done - echo ${ret} + + # Sort and unique the package list + for package in ${ret}; do + echo "${package}" + done | sort -u } function package_sort() { @@ -364,3 +368,15 @@ function package_id() { echo ${hash:0:6} } + +function package_decompress() { + local file + local pkg + for pkg in $@; do + for file in $(package_packages ${pkg}); do + PATH=${TOOLS_DIR}/sbin:${TOOLS_DIR}/bin:${PATH} \ + ${BASEDIR}/src/pakfire/decompressor --root=${BUILD_DIR} \ + ${DIR_PACKAGES}/${file} + done + done +} diff --git a/tools/naoki-functions b/tools/naoki-functions index fd552b72a..91c72ddb6 100644 --- a/tools/naoki-functions +++ b/tools/naoki-functions @@ -60,15 +60,7 @@ function naoki_prepare() { local p=$(find_package ${1}) shift - #local pkg_dependencies=$(dependencies_resolve ${p}) - #msg " Resolving dependencies: ${pkg_dependencies-None}" - #local dep - #for dep in ${pkg_dependencies}; do - # if ! package_is_built ${dep}; then - # msg "Dependencies for ${p} are missing. Cannot prepare." - # exit 4 - # fi - #done + msg "Preparing environment ${BUILD_DIR}..." @@ -93,9 +85,23 @@ function naoki_prepare() { mount --bind /${i} ${BUILD_DIR}/${i} done - #naoki_make ${p} --without-chroot download + CHROOT=0 naoki_make ${p} --without-chroot download # Extract needed packages + local pkg_dependencies=$(dependencies_resolve ${p} | tr "\n" " ") + msg " Resolving dependencies: ${pkg_dependencies-None}" + local dep + for dep in ${pkg_dependencies}; do + if ! package_is_built ${dep}; then + msg "Dependencies for ${p} are missing. Cannot prepare." + return 4 + fi + done + + for dep in ${pkg_dependencies}; do + msg "Decompressing ${dep}..." + package_decompress ${dep} + done for i in /bin/bash /bin/pwd /bin/sh; do if [ -e "${BUILD_DIR}${i}" ]; then @@ -233,14 +239,6 @@ function naoki_build() { local ret msg "Going on to build package \"${p}\"." - - CHROOT=0 naoki_make ${p} --without-chroot download $@ - ret=$? - - if [ "${ret}" != "0" ]; then - error "Download command failed." - exit ${ret} - fi naoki_prepare ${p} $@ ret=$?