buildroot/scripts/create_ipkgs
2008-03-06 17:52:37 +00:00

83 lines
2.1 KiB
Bash
Executable File

#!/bin/sh
# this script is very *alpha* so be gentle...
# change these lines to your arch and maintainer name
ARCH="avr32"
PACK_MAINTAINER="John Voltz <john.voltz@gmail.com>"
BUILDROOT_DIR=`pwd`
echo "Creating ipkgs from your build directory..."
echo "Please be patient, as this can take a long time.
"
# create the ipkg directories
mkdir -p ${BUILDROOT_DIR}/ipkg-temp
mkdir -p ${BUILDROOT_DIR}/ipkg-out
for PACKAGE in `ls -d ./build_*/*`; do
# extract some info
NAME_WITHOUT_VER=${PACKAGE%-*}
VERSION=${PACKAGE#${NAME_WITHOUT_VER}-}
NAME_WITHOUT_DIR=${NAME_WITHOUT_VER#*/*/}
CLEAN_NAME=${NAME_WITHOUT_DIR//_/-}
# clean out the temp directory
rm -rf ${BUILDROOT_DIR}/ipkg-temp/*
# install the package to temp directory
cd ${PACKAGE}
echo "Installing ${NAME_WITHOUT_DIR} to ./ipkg-temp"
make DESTDIR=${BUILDROOT_DIR}/ipkg-temp DSTROOT=${BUILDROOT_DIR}/ipkg-temp install &> /dev/null
# create the control file
cd ${BUILDROOT_DIR}
mkdir ${BUILDROOT_DIR}/ipkg-temp/CONTROL
# find it's corresponding buildroot package directory
PACK_NAME=`find ./package -path './package/config' -prune -o -name ${NAME_WITHOUT_DIR}`
PACK_NAME=${PACK_NAME%./package/config}
PACK_NAME=${PACK_NAME#./package/config}
PACK_NAME=`echo -n ${PACK_NAME}`
# there must be an better way to extract the description and
# dependencies from the Config.in and *.mk file.
# Haven't figured it out just yet.
CONF_FILE=`cat ${PACK_NAME}/Config.in`
#MAKE_FILE=`cat ${PACK_NAME}/*.mk`
HELP_STR=${CONF_FILE#*help}
HELP_STR=${HELP_STR%%comment*}
HELP_STR=${HELP_STR%%choice*}
HELP_STR=${HELP_STR%%depends*}
HELP_STR=${HELP_STR%%http*}
HELP_STR=`echo -n ${HELP_STR}`
echo ${HELP_STR}
if [ "${PACK_NAME}" != "" ]; then
echo "Creating ipkg of: ${PACKAGE}"
cat > ${BUILDROOT_DIR}/ipkg-temp/CONTROL/control <<EOF
Package: ${CLEAN_NAME}
Priority: optional
Version: ${VERSION}
Architecture: ${ARCH}
Maintainer: ${PACK_MAINTAINER}
Depends: uclibc
Description: ${HELP_STR}
EOF
# build the package
package/ipkg/ipkg-build ${BUILDROOT_DIR}/ipkg-temp ${BUILDROOT_DIR}/ipkg-out
fi
echo "Complete.
"
done
echo "ipkg builds are finished."