diff options
author | Mark Ferrell <major@homeonderanged.org> | 2012-04-20 16:47:48 -0500 |
---|---|---|
committer | Mark Ferrell <major@homeonderanged.org> | 2012-04-20 16:47:48 -0500 |
commit | 5bea4c9c610c40efddfe16b5865421c8627c0506 (patch) | |
tree | f106220d43e209be80aaae1c7e00fc2fb91e597a | |
parent | 4911f3871c6e15017e1326713ca0e8877f66035d (diff) |
Revert build-archive functionality
* Instead of merging prep/compile/archive into 1 command I have reversed
direction slightly. The individual stages/commands will be maintained
as separate scripts, but they will no longer create time-stamp files so
that they always get executed every time.
-rwxr-xr-x | scripts/build | 6 | ||||
-rw-r--r-- | scripts/builder/build-archive | 43 | ||||
-rwxr-xr-x | scripts/builder/build-compile | 38 | ||||
-rwxr-xr-x | scripts/builder/build-install | 1 | ||||
-rwxr-xr-x | scripts/builder/build-makedeps | 48 | ||||
-rwxr-xr-x | scripts/builder/build-prep | 2 |
6 files changed, 78 insertions, 60 deletions
diff --git a/scripts/build b/scripts/build index 79d9de1..1a9b4b7 100755 --- a/scripts/build +++ b/scripts/build @@ -55,6 +55,10 @@ Commands configure with predefined CONFIG_OPTS, and then perform a make with MAKE_OPTS. + archive Perform a 'make install' of the package into the package's + sysroot and then produce an archive of the package and store + that in the build-tree's artifact directory. + install Install a package into the build-tree's sysroot (as opposed to a packages sysroot or into the build-host's root). This is done automatically for any build-dependent packages. @@ -257,7 +261,7 @@ PATH="${BUILDER_LIBDIR}:${PATH}" export PATH # if we aren't given an action then we do everything -ACTION="compile" +ACTION="archive" if [ "$#" -gt "0" ]; then ACTION="${1}" shift 1 diff --git a/scripts/builder/build-archive b/scripts/builder/build-archive new file mode 100644 index 0000000..8ddde97 --- /dev/null +++ b/scripts/builder/build-archive @@ -0,0 +1,43 @@ +#!/usr/bin/env build + +echo "archiving: ${1}" +eval $(build query --environ "${1}") + +ARCHIVE_TMP1= +ARCHIVE_TMP2= +cleanup() +{ + [ -f "${ARCHIVE_TMP1}" ] && rm -f "${ARCHIVE_TMP1}" + [ -f "${ARCHIVE_TMP2}" ] && rm -f "${ARCHIVE_TMP2}" + exit 0 +} +trap cleanup EXIT +set -e + +ARCHIVE_TMP1="$(mktemp "${BUILDER_TMPDIR}/${NAME}-${VERSION}.XXXXXXXX")" +ARCHIVE_TMP2="$(mktemp "${BUILDER_TMPDIR}/${NAME}-${VERSION}.XXXXXXXX")" + +[ -f "${ARCHIVE_TMP1}" ] || die "failed to create temporary archive for package '${NAME}'" +[ -f "${ARCHIVE_TMP2}" ] || die "failed to create temporary archive for package '${NAME}'" + +case "${ARCHIVE_FORMAT}" in +(tbz2|tar.bz2) ARCHIVE_COMPRESSOR="bzip2 -cv";; +(tgz|tar.gz) ARCHIVE_COMPRESSOR="gzip -cv";; +(*) die "unsupported archive format '${ARCHIVE_FORMAT}'";; +esac + +if [ ! -d "${BUILDER_ATFDIR}/${CATEGORY}" ]; then + mkdir -p "${BUILDER_ATFDIR}/${CATEGORY}" +fi + +cd "${D}" +tar -cvf "${ARCHIVE_TMP1}" . > "${L}/archive.log" 2>&1 +${ARCHIVE_COMPRESSOR} "${ARCHIVE_TMP1}" > "${ARCHIVE_TMP2}" 2>> "${L}/archive.log" +if [ -f "${BUILDER_ATFDIR}/${CATEGORY}/${NAME}-${VERSION}.${ARCHIVE_FORMAT}" ]; then + rm -f "${BUILDER_ATFDIR}/${CATEGORY}/${NAME}-${VERSION}.${ARCHIVE_FORMAT}" +fi +mv -v "${ARCHIVE_TMP2}" "${BUILDER_ATFDIR}/${CATEGORY}/${NAME}-${VERSION}.${ARCHIVE_FORMAT}" >> "${L}/archive.log" 2>&1 +cd "${W}" +rm -rf "${D}" + +# vim: filetype=sh diff --git a/scripts/builder/build-compile b/scripts/builder/build-compile index e820d8c..5992d59 100755 --- a/scripts/builder/build-compile +++ b/scripts/builder/build-compile @@ -8,17 +8,6 @@ unset MAKEFLAGS PATH="${TOOLDIR}/bin:${PATH}" export PATH -ARCHIVE_TMP1= -ARCHIVE_TMP2= -cleanup() -{ - [ -f "${ARCHIVE_TMP1}" ] && rm -f "${ARCHIVE_TMP1}" - [ -f "${ARCHIVE_TMP2}" ] && rm -f "${ARCHIVE_TMP2}" - exit 0 -} -trap cleanup EXIT -set -e - pkg_compile() { # FIXME these defaults need moved elsewhere @@ -71,33 +60,8 @@ set >> "${E}/compile.env" cd "${S}" pkg_compile >> "${L}/compile.log" 2>&1 -cd "${W}" -rm -rf "${S}" - -ARCHIVE_TMP1="$(mktemp "${BUILDER_TMPDIR}/${NAME}-${VERSION}.XXXXXXXX")" -ARCHIVE_TMP2="$(mktemp "${BUILDER_TMPDIR}/${NAME}-${VERSION}.XXXXXXXX")" -[ -f "${ARCHIVE_TMP1}" ] || die "failed to create temporary archive for package '${NAME}'" -[ -f "${ARCHIVE_TMP2}" ] || die "failed to create temporary archive for package '${NAME}'" - -case "${ARCHIVE_FORMAT}" in -(tbz2|tar.bz2) ARCHIVE_COMPRESSOR="bzip2 -cv";; -(tgz|tar.gz) ARCHIVE_COMPRESSOR="gzip -cv";; -(*) die "unsupported archive format '${ARCHIVE_FORMAT}'";; -esac - -if [ ! -d "${BUILDER_ATFDIR}/${CATEGORY}" ]; then - mkdir -p "${BUILDER_ATFDIR}/${CATEGORY}" -fi - -cd "${D}" -tar -cvf "${ARCHIVE_TMP1}" . > "${L}/archive.log" 2>&1 -${ARCHIVE_COMPRESSOR} "${ARCHIVE_TMP1}" > "${ARCHIVE_TMP2}" 2>> "${L}/archive.log" -if [ -f "${BUILDER_ATFDIR}/${CATEGORY}/${NAME}-${VERSION}.${ARCHIVE_FORMAT}" ]; then - rm -f "${BUILDER_ATFDIR}/${CATEGORY}/${NAME}-${VERSION}.${ARCHIVE_FORMAT}" -fi -mv -v "${ARCHIVE_TMP2}" "${BUILDER_ATFDIR}/${CATEGORY}/${NAME}-${VERSION}.${ARCHIVE_FORMAT}" >> "${L}/archive.log" 2>&1 cd "${W}" -rm -rf "${D}" +rm -rf "${S}" # vim: filetype=sh diff --git a/scripts/builder/build-install b/scripts/builder/build-install index 871fd65..18fe0e3 100755 --- a/scripts/builder/build-install +++ b/scripts/builder/build-install @@ -28,5 +28,6 @@ else fi ${ARCHIVE_DECOMPRESSOR} "${BUILDER_ATFDIR}/${CATEGORY}/${NAME}-${VERSION}.${ARCHIVE_FORMAT}" | tar x +date --utc > "${W}/.installed" # vim: filetype=sh diff --git a/scripts/builder/build-makedeps b/scripts/builder/build-makedeps index 1120967..778f3a8 100755 --- a/scripts/builder/build-makedeps +++ b/scripts/builder/build-makedeps @@ -4,10 +4,11 @@ cat >"${BUILDER_MAKEFILE}" <<EOF # Some generic catchall rules all: packages_archive all_fetch: packages_fetch -all_prep: packages_prep all_clean: tmpdir_clean sysroot_clean all_distclean: tmpdir_clean sysroot_clean artifacts_clean tooldir_clean +all_prep: packages_prep all_compile: packages_compile +all_archive: packages_archive all_install: packages_install all_makedeps: @@ -24,11 +25,11 @@ artifacts_clean: EOF PACKAGES= -PACKAGES_PREP= PACKAGES_SOURCES= -PACKAGES_CLEAN= PACKAGES_COMPILE= +PACKAGES_ARCHIVE= PACKAGES_INSTALL= +PACKAGES_CLEAN= for package in $(cd "${BUILDER_PKGDIR}" && echo */*); do if ! eval $(build query --environ "${package}"); then die "in package '${package}'" @@ -37,7 +38,6 @@ for package in $(cd "${BUILDER_PKGDIR}" && echo */*); do package_make="$(echo "${package}"|tr '/-' '__')" package_archive="${BUILDER_ATFDIR}/${CATEGORY}/${NAME}-${VERSION}.${ARCHIVE_FORMAT}" package_install="${W}/.installed" - package_prep="${W}/.prepped" package_logdir="${L}" package_sources="${RULESFILE}" @@ -92,26 +92,33 @@ cat <<EOF ## # ${CATEGORY}/${NAME} - ${DESCRIPTION} ${package_make}: ${package_archive} -${package_make}_install: ${package_install} -${package_make}_compile: ${package_archive} ${package_make}_fetch: ${package_sources} -${package_make}_makedeps: -${package_make}_clean: - @build-clean ${CATEGORY}/${NAME} -${package_install}: ${package_archive} - @build-install ${CATEGORY}/${NAME} -${package_archive}: ${package_prep}${package_deps} +${package_make}_prep: ${package_sources} +${package_prep}: ${package_sources} + @if ! build-prep ${CATEGORY}/${NAME}; then \ + echo "error: failed to prepare package '${CATEGORY}/${NAME}'" >&2 ;\ + echo "logfile: '${L}/prep.log'" >&2 ;\ + exit 1 ;\ + fi +${package_make}_compile: ${package_make}_prep ${package_deps} @if ! build-compile ${CATEGORY}/${NAME}; then \ echo "error: failed to compile package '${CATEGORY}/${NAME}'" >&2 ;\ echo "logfile: '${L}/compile.log'" >&2 ;\ exit 1 ;\ fi -${package_prep}: ${package_sources} - @if ! build-prep ${CATEGORY}/${NAME}; then \ - echo "error: failed to prepare package '${CATEGORY}/${NAME}'" >&2 ;\ - echo "logfile: '${L}/prep.log'" >&2 ;\ +${package_make}_archive: ${package_archive} +${package_archive}: ${package_make}_compile + @if ! build-archive ${CATEGORY}/${NAME}; then \ + echo "error: failed to archive package '${CATEGORY}/${NAME}'" >&2 ;\ + echo "logfile: '${L}/archive.log'" >&2 ;\ exit 1 ;\ fi +${package_make}_install: ${package_install} +${package_install}: ${package_archive} + @build-install ${CATEGORY}/${NAME} +${package_make}_makedeps: +${package_make}_clean: + @build-clean ${CATEGORY}/${NAME} EOF ## @@ -147,8 +154,8 @@ EOF if [ "${CATEGORY}" = "${PROJECT_NAME}" ]; then PACKAGES="${PACKAGES} ${package_make}" PACKAGES_SOURCES="${PACKAGES_SOURCES} ${package_sources}" - PACKAGES_PREP="${PACKAGES_PREP} ${package_prep}" - PACKAGES_COMPILE="${PACKAGES_COMPILE} ${package_archive}" + PACKAGES_COMPILE="${PACKAGES_COMPILE} ${package_make}_compile" + PACKAGES_ARCHIVE="${PACKAGES_ARCHIVE} ${packages_archive}" PACKAGES_INSTALL="${PACKAGES_INSTALL} ${package_install}" fi PACKAGES_CLEAN="${PACKAGES_CLEAN} ${package_make}_clean" @@ -156,10 +163,11 @@ done >> "${BUILDER_MAKEFILE}" cat<<EOF >> "${BUILDER_MAKEFILE}" packages_fetch: ${PACKAGES_SOURCES} -packages_prep: ${PACKAGES_PREP} -packages_clean: ${PACKAGES_CLEAN} +packages_prep: ${PACKAGES_SOURCES} packages_compile: ${PACKAGES_COMPILE} +packages_archive: ${PACKAGES_ARCHIVE} packages_install: ${PACKAGES_INSTALL} +packages_clean: ${PACKAGES_CLEAN} EOF # vim: filetype=sh diff --git a/scripts/builder/build-prep b/scripts/builder/build-prep index f6a772b..f3c1e7a 100755 --- a/scripts/builder/build-prep +++ b/scripts/builder/build-prep @@ -55,6 +55,4 @@ if [ ! -z "${PATCHES}" ]; then done fi -date --utc > "${W}/.prepped" - # vim: filetype=sh |