summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorP. J. McDermott <pjm@nac.net>2013-08-13 17:30:35 (EDT)
committer P. J. McDermott <pjm@nac.net>2013-08-13 17:30:35 (EDT)
commitfe24e3cbea686ae2ac83b59d0adfd147f15145b2 (patch)
treeb444b16fe8220e495282ffb5b05336d04682f1e3
parent7bc95f5242f6d418baedc6fbaa9f0ea26d99f07b (diff)
Make target-arch build-essential packages.
These are for both native and cross building.
-rw-r--r--.gitignore3
-rw-r--r--build-essential.pkg.in/control14
-rw-r--r--build-essential.pkg.in/docs (renamed from build-essential.pkg/docs)0
-rw-r--r--build-essential.pkg/control7
-rwxr-xr-xconfig64
-rw-r--r--targets.in4
6 files changed, 85 insertions, 7 deletions
diff --git a/.gitignore b/.gitignore
index c085005..005855b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,6 +4,9 @@
*~
Session.vim
+# Generated files
+build-essential-*-*-*.pkg/
+
# Work area
tmp/
diff --git a/build-essential.pkg.in/control b/build-essential.pkg.in/control
new file mode 100644
index 0000000..d9e84ef
--- /dev/null
+++ b/build-essential.pkg.in/control
@@ -0,0 +1,14 @@
+Architecture: all
+Platform: all
+Depends:
+ libc.6-dev,
+ binutils-@PKG_TARGET_ARCH@,
+ gcc-@PKG_TARGET_ARCH@,
+ g++-@PKG_TARGET_ARCH@,
+ gmake,
+ opkbuild,
+ opkhelper
+Recommends: fakeroot
+Description: Metapackage for building packages for @PKG_TARGET_ARCH@
+ This package depends on packages that are considered necessary for building
+ software packages for @PKG_TARGET_ARCH@.
diff --git a/build-essential.pkg/docs b/build-essential.pkg.in/docs
index e69de29..e69de29 100644
--- a/build-essential.pkg/docs
+++ b/build-essential.pkg.in/docs
diff --git a/build-essential.pkg/control b/build-essential.pkg/control
deleted file mode 100644
index ebd0afc..0000000
--- a/build-essential.pkg/control
+++ /dev/null
@@ -1,7 +0,0 @@
-Architecture: all
-Platform: all
-Depends: libc.6-dev, binutils, gcc, g++, gmake, opkbuild, opkhelper
-Recommends: fakeroot
-Description: Metapackage for package building
- This package depends on packages that are considered necessary for building
- software packages.
diff --git a/config b/config
new file mode 100755
index 0000000..f43e783
--- /dev/null
+++ b/config
@@ -0,0 +1,64 @@
+#!/bin/sh
+
+set -e
+
+TPL_PKGS='build-essential'
+
+main()
+{
+ case "${1}" in
+ 'clean')
+ clean
+ ;;
+ '')
+ if [ -z "${PKG_TARGETS}" ]; then
+ PKG_TARGETS="$(cat targets.in)"
+ fi
+ for arch in ${PKG_TARGETS}; do
+ PKG_TARGET_ARCH="${arch}" configure_build
+ done
+ ;;
+ esac
+}
+
+msg()
+{
+ printf 'build-essential config: '
+ printf "${@}"
+ printf '\n'
+}
+
+configure_build()
+{
+ local ss=
+ local name=
+ local pkg=
+
+ # Generate a sed script to edit files.
+ ss=''
+ for name in TARGET_ARCH; do
+ ss="${ss}s&@PKG_${name}@&$(eval echo \$\{PKG_${name}\})&;"
+ done
+
+ # Write metadata for <pkgbase>-<target> packages.
+ for pkg in ${TPL_PKGS}; do
+ mkdir -p "${pkg}-${PKG_TARGET_ARCH}.pkg"
+ sed "${ss}" "${pkg}.pkg.in/control" \
+ >"${pkg}-${PKG_TARGET_ARCH}.pkg/control"
+ cp "${pkg}.pkg.in/docs" "${pkg}-${PKG_TARGET_ARCH}.pkg/docs"
+ msg 'Metadata for package "%s" generated.' \
+ "${pkg}-${PKG_TARGET_ARCH}"
+ done
+}
+
+clean()
+{
+ local pkg=
+
+ # Remove generated metadata for <pkgbase>-<target> packages.
+ for pkg in ${TPL_PKGS}; do
+ rm -Rf "${pkg}"-*-*-*.pkg/
+ done
+}
+
+main "${@}"
diff --git a/targets.in b/targets.in
new file mode 100644
index 0000000..d2bfce2
--- /dev/null
+++ b/targets.in
@@ -0,0 +1,4 @@
+core-linux-eglibc
+i686-linux-eglibc
+i686-kfreebsd-eglibc
+cortexa8-linux-eglibc