Index: .fossil-settings/ignore-glob ================================================================== --- .fossil-settings/ignore-glob +++ .fossil-settings/ignore-glob @@ -16,10 +16,16 @@ server/buildpkgs/Tk85/build/* server/buildpkgs/Tk85/out server/buildpkgs/Tk85/out/* server/buildpkgs/Tk85/src server/buildpkgs/Tk85/src/* +server/buildpkgs/Tkimg/build +server/buildpkgs/Tkimg/build/* +server/buildpkgs/Tkimg/out +server/buildpkgs/Tkimg/out/* +server/buildpkgs/Tkimg/src +server/buildpkgs/Tkimg/src/* server/buildpkgs/dbus-tcl/build server/buildpkgs/dbus-tcl/build/* server/buildpkgs/dbus-tcl/out server/buildpkgs/dbus-tcl/out/* server/buildpkgs/dbus-tcl/src ADDED server/buildpkgs/Tkimg/build.sh Index: server/buildpkgs/Tkimg/build.sh ================================================================== --- /dev/null +++ server/buildpkgs/Tkimg/build.sh @@ -0,0 +1,159 @@ +#! /bin/bash + +# Define parameters +VERS=1.4 +SRC="src/tkimg${VERS}.tar.gz" +SRCURL="http://sourceforge.net/projects/tkimg/files/tkimg/${VERS}/tkimg${VERS}.tar.gz/download" +BUILDDIR="tkimg${VERS}" +export VERS SRC SRCURL BUILDDIR + +# Load common functions +source ../common.sh + +# Do not build if the "tcl" platform has been requested +not_platforms 'tcl' + +# Download source +download_src + +# We require linking against Tk, so find Tk 8.4 and use it. If it can't be found, abort. +tcl_plat_build_dir="$(basename "${TCLBUILDDIR}")" +tkdir="$(echo "$(pwd)/../Tk84/build"/tk*/${tcl_plat_build_dir})" +if [ ! -d "${tkdir}" -o ! -f "${tkdir}/tkConfig.sh" ]; then + echo "Unable to find Tk 8.4 directory, please build Tk84 before Tkimg" >&2 + + exit 1 +fi + +# Determine installation root + +INSTROOT="$(pwd)/out" +export INSTROOT + +# Build package +( + rm -rf build + mkdir -p "${INSTDIR}" >/dev/null 2>/dev/null + mkdir build + + cd build/ || exit 1 + + gzip -dc "../${SRC}" | tar -xf - + cd "${BUILDDIR}" || exit 1 + + INSTDIR="${INSTROOT}/__TMP__/${PLATFORM}" + + bash ./configure --enable-shared --with-tcl="${TCLCONFIGDIR}" --with-tk="${tkdir}" --prefix="${INSTDIR}" --libdir="${INSTDIR}" --bindir="${INSTDIR}" ${CONFIGUREEXTRA} + + ${MAKE:-make} || exit 1 + + ${MAKE:-make} install || exit 1 + + mv "${INSTDIR}/Img${VERS}"/* "${INSTDIR}/" + rm -rf "${INSTDIR}/Img${VERS}" + + rm -f "${INSTDIR}"/*.a "${INSTDIR}"/*.sh + rm -rf "${INSTDIR}/include" "${INSTDIR}/share" +) || exit 1 + +# Split package into pieces +( + cd "${INSTROOT}/__TMP__/${PLATFORM}" || exit 1 + + if [ ! -f "pkgIndex.tcl" ]; then + echo "Unable to find pkgIndex.tcl in $(pwd), aborting." + + exit 1 + fi + + cat pkgIndex.tcl | while read package ifneeded pkg vers extra; do + if [ "${package}" != "package" -o "${ifneeded}" != "ifneeded" ]; then + continue + fi + + INSTDIR="${INSTROOT}/${pkg}-${vers}/${PLATFORM}" + + mkdir -p "${INSTDIR}" || exit 1 + + # Handle this meta-package + if [ "${pkg}" = "Img" -a "${extra}" = "{" ]; then + pkgfile='' + + echo "package ifneeded ${pkg} ${vers} {" > "${INSTDIR}/pkgIndex.tcl" + + while read line; do + if [ "${line}" = "}" ]; then + break + fi + + echo " ${line}" >> "${INSTDIR}/pkgIndex.tcl" + done + + echo "}" >> "${INSTDIR}/pkgIndex.tcl" + + pkgdeps="$(cat "${INSTDIR}/pkgIndex.tcl" | grep 'package require' | sed 's@^.*package require @@' | tr "\n" ',')" + + "${BUILDSYSROOT}/create_teapot" "${INSTDIR}/teapot.txt" "${pkg}" "${vers}" "${SRCURL}" "${PLATFORM}" "Tcl 8.4,${pkgdeps}" "The Tkimg meta-package. This package enhances Tk, adding support for many other Image formats: BMP, XBM, XPM, GIF (with transparency, but without LZW), PNG, JPEG, TIFF and postscript." + + continue + fi + + pkgfile="$(echo "${extra}" | sed 's@^.*\$dir @@;s@\]*$@@')" + + if [ -z "${pkgfile}" -o ! -f "${pkgfile}" ]; then + continue + fi + + # Copy package files into package directory + cp "${pkgfile}" "${INSTDIR}/" + + # Create metadata + ## Tcl pkgIndex file + echo "package ifneeded ${pkg} ${vers} [list load [file join \$dir \"${pkgfile}\"]]" > "${INSTDIR}/pkgIndex.tcl" + done +) || exit 1 + +rm -rf "${INSTROOT}/__TMP__" + +# Create teapot metadata -- need to have all packages in place prior to this +( + cd "${INSTROOT}" || exit 1 + + for dir in */; do + ( + cd "${dir}" || exit 1 + + cd "${PLATFORM}" || exit 1 + + if [ ! -f "pkgIndex.tcl" ]; then + exit 1 + fi + + if [ -f "teapot.txt" ]; then + exit 0 + fi + + pkg="$(echo "${dir}" | cut -f 1 -d '-')" + vers="$(echo "${dir}" | cut -f 2 -d '-' | sed 's@//*$@@')" + + pkgdeps='' + for deppkg in $(find . -type f | xargs "${NM:-nm}" 2>/dev/null | grep StubsPtr | sed 's@^.* \([^ ]*\)StubsPtr *[^ ]*$@\1@;s@^tkimg$@img::base@'); do + + if [ "${deppkg}" = "${pkg}" ]; then + continue + fi + + deppkgdir="$(echo ../../${deppkg}-*)" + if [ ! -d "${deppkgdir}" ]; then + continue + fi + + pkgdeps="${pkgdeps},${deppkg}" + done + + "${BUILDSYSROOT}/create_teapot" "teapot.txt" "${pkg}" "${vers}" "${SRCURL}" "${PLATFORM}" "Tcl 8.4${pkgdeps}" "Part of the Tkimg package" + ) + done +) || exit 1 + +exit 0 Index: server/buildpkgs/common.sh ================================================================== --- server/buildpkgs/common.sh +++ server/buildpkgs/common.sh @@ -122,8 +122,9 @@ done } WORKDIR="${TMPDIR:-/tmp}/tcl-buildpkgs-$$${RANDOM}${RANDOM}${RANDOM}" PLATDIR="$(pwd)/out/${VERS}/${PLATFORM}" -export WORKDIR PLATDIR +BUILDSYSROOT="$(cd ../; pwd)" +export WORKDIR PLATDIR BUILDSYSROOT setup_tcl84