ADDED packages/build Index: packages/build ================================================================== --- /dev/null +++ packages/build @@ -0,0 +1,206 @@ +#! /usr/bin/env bash + +pkg="$(echo "$1" | sed 's@/*$@@;s@^\.*/*@@')" + +if [ -z "${pkg}" ]; then + echo "Usage: build " 2>&1 + + exit 1 +fi + +function determineOsArch() { + os="$(uname -s | dd conv=lcase 2>/dev/null)" + arch="$(uname -m | dd conv=lcase 2>/dev/null)" + + case "${arch}" in + i?86) + arch='ix86' + ;; + esac +} + +function determinePrefix() { + determineOsArch + + prefixsuffix="${pkg}/${os}-${arch}/${version}" + prefix="/opt/appfs/${domain}/${prefixsuffix}" + destdir="$(pwd)/INST" + + mkdir "${destdir}" || die +} + +function preconfigure() { + : +} + +function postconfigure() { + : +} + +function configure() { + glibcvers=2.20 + glibcdir="/opt/appfs/core.appfs.rkeene.org/glibc/platform/${glibcvers}" + dynlinker="$(ls "${glibcdir}"/lib/ld-linux*.so.* | tail -n 1)" + + CFLAGS="-I${glibcdir}/include" + CPPFLAGS="-I${glibcdir}/include" + LDFLAGS="-Wl,--rpath,${glibcdir}/lib -Wl,--dynamic-linker,${dynlinker}" + export CFLAGS CPPFLAGS LDFLAGS + + ./configure --prefix="${prefix}" --sysconfdir=/etc --localstatedir=/var +} + +function prebuild() { + : +} + +function postbuild() { + : +} + +function build() { + grep "DESTDIR" Makefile || die "Don't know how to build this software" + + make +} + +function preinstall() { + : +} + +function postinstall() { + : +} + +function install() { + make install DESTDIR="${destdir}" +} + +function cleanup() { + cd "${workdir}" || exit 1 + cd .. || exit 1 + rm -rf "${workdir}" +} + +function die() { + local message + + message="$1" + + if [ -n "${message}" ]; then + echo "error: ${message}" >&2 + fi + + cleanup + + exit 1 +} + +cd "$(dirname "$(which "$0")")" || exit 1 + +if [ -f 'build.conf' ]; then + . 'build.conf' +fi + +if [ -d "pkgs/${pkg}" ]; then + pkgdir="pkgs/${pkg}" + pkgfile="${pkgdir}/info" +else + pkgfile="pkgs/${pkg}" + pkgdir="${pkgfile}" +fi +pkgdate="$(find "${pkgdir}" -type f -printf '%TY%Tm%Td%TH%TM.%TS\n' | cut -f 1-2 -d '.' | sort -n | tail -n 1)" + +. "${pkgfile}" + +archivedir="$(pwd)/ARCHIVE" +workdir="workdir-$$${RANDOM}${RANDOM}${RANDOM}" +mkdir "${workdir}" "${archivedir}" +cd "${workdir}" || exit 1 +workdir="$(pwd)" + +# Download +## Cleanup +rm -f src.new src + +## Fetch file +wget -O src.new "${url}" || exit 1 + +## Verify signature +### XXX:TODO + +## Move file into place +mv src.new src + +# Decompress archive +## Determine type of archive +case "${url}" in + *.tar.xz|*.tar.xz'?'*|*.txz) + decompress='xz' + ;; + *.tar.gz|*.tar.gz'?'*|*.tgz) + decompress='gzip' + ;; + *.tar.bz2|*.tar.bz2'?'*|*.tbz2) + decompress='bzip2' + ;; + *.zip|*.zip'?'*) + decompress='unzip' + ;; + *) + echo "Unknown compression method: ${url}" >&2 + + exit 1 + ;; +esac + +## Do decompression +case "${decompress}" in + unzip) + unzip 'src' || die 'Unable to uncompress archive' + ;; + *) + "${decompress}" -dc src | tar -xf - || die 'Unable to uncompress archive' + ;; +esac + +## Cleanup source +rm -f src + +# If we just have one directory, use that directory +dir="$(echo *)" +if [ -e "${dir}" ]; then + mv "${dir}"/* . +fi + +# Start logging +set -x + +# Determine properties +determinePrefix + +# Start the build +preconfigure || die 'preconfigure failed' +configure || die 'configure failed' +postconfigure || die 'postconfigure failed' + +prebuild || die 'prebuild failed' +build || die 'build failed' +postbuild || die 'postbuild failed' + +preinstall || die 'preinstall failed' +install || die 'install failed' +postinstall || die 'postinstall failed' + +( + appdir="$(appfsinstalldir)/${prefixsuffix}" + mkdir -p "${appdir}" + + cd "${destdir}/${prefix}" || exit 1 + cp -rp * "${appdir}" + find "${appdir}" -print0 | xargs -0 touch -t "${pkgdate}" +) + +cleanup + +exit 0 ADDED packages/build.conf Index: packages/build.conf ================================================================== --- /dev/null +++ packages/build.conf @@ -0,0 +1,14 @@ +domain=rkeene.org +function appfsinstalldir() { + case "${domain}" in + rkeene.org) + echo "/web/rkeene/appfs/applications" + ;; + appfs.rkeene.org) + echo "/web/customers/appfs.rkeene.org/appfs/applications" + ;; + core.appfs.rkeene.org) + echo "/web/static/core.appfs.rkeene.org/appfs/applications" + ;; + esac +} ADDED packages/pkgs/glibc Index: packages/pkgs/glibc ================================================================== --- /dev/null +++ packages/pkgs/glibc @@ -0,0 +1,15 @@ +#! /usr/bin/env bash + +version=2.20 +url="http://ftp.gnu.org/gnu/glibc/glibc-${version}.tar.xz" +domain=core.appfs.rkeene.org +sha256='' + +function configure() { + mkdir BUILD + cd BUILD + + ../configure --prefix="${prefix}" --sysconfdir=/etc --localstatedir=/var || return 1 + + echo '# Ignore: DESTDIR' >> Makefile +} ADDED packages/pkgs/readline Index: packages/pkgs/readline ================================================================== --- /dev/null +++ packages/pkgs/readline @@ -0,0 +1,6 @@ +#! /usr/bin/env bash + +version=6.3 +url="https://ftp.gnu.org/gnu/readline/readline-${version}.tar.gz" +domain=core.appfs.rkeene.org +sha256=''