aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Ferrell <major@homeonderanged.org>2012-04-20 16:47:48 -0500
committerMark Ferrell <major@homeonderanged.org>2012-04-20 16:47:48 -0500
commit5bea4c9c610c40efddfe16b5865421c8627c0506 (patch)
treef106220d43e209be80aaae1c7e00fc2fb91e597a
parent4911f3871c6e15017e1326713ca0e8877f66035d (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-xscripts/build6
-rw-r--r--scripts/builder/build-archive43
-rwxr-xr-xscripts/builder/build-compile38
-rwxr-xr-xscripts/builder/build-install1
-rwxr-xr-xscripts/builder/build-makedeps48
-rwxr-xr-xscripts/builder/build-prep2
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