156 lines
3.2 KiB
Bash
156 lines
3.2 KiB
Bash
|
#!/bin/sh
|
||
|
|
||
|
TOP_DIR=`cd \`echo "$0" | sed -n '/\//{s/\/[^\/]*$//;p;}'\`;pwd`
|
||
|
SELF_NAME=`basename "$0" .sh`
|
||
|
PKG=`echo ${SELF_NAME} | sed -e 's/\-[^\-]*\-[^\-]*$//'`
|
||
|
VER=`echo ${SELF_NAME} | sed -e 's/^[^\-]*\-//' -e 's/\-[^\-]*$//'`
|
||
|
REL=`echo ${SELF_NAME} | sed -e 's/^[^\-]*\-[^\-]*\-//'`
|
||
|
FULLPKG=${PKG}-${VER}-${REL}
|
||
|
|
||
|
SOURCE_DIR="${TOP_DIR}/${PKG}-${VER}"
|
||
|
BINARY_DIR=${SOURCE_DIR}/.build
|
||
|
INSTALL_DIR=${SOURCE_DIR}/.inst
|
||
|
SPKG_DIR=${SOURCE_DIR}/.sinst
|
||
|
SOURCE_PACKAGE="${TOP_DIR}/${FULLPKG}-src.tar.bz2"
|
||
|
SOURCE_TARBALL="${TOP_DIR}/${PKG}-${VER}.tar.bz2"
|
||
|
SOURCE_PATCH="${TOP_DIR}/${FULLPKG}.patch"
|
||
|
PREFIX="/usr"
|
||
|
|
||
|
BINARY_PACKAGE="${TOP_DIR}/${FULLPKG}.tar.bz2"
|
||
|
|
||
|
mkdirs()
|
||
|
{
|
||
|
(
|
||
|
mkdir -p "${BINARY_DIR}" "${INSTALL_DIR}" "${SPKG_DIR}"
|
||
|
)
|
||
|
}
|
||
|
|
||
|
prep()
|
||
|
{
|
||
|
(
|
||
|
cd ${TOP_DIR} &&
|
||
|
tar xvjf "${SOURCE_TARBALL}" &&
|
||
|
patch -p0 < "${SOURCE_PATCH}" &&
|
||
|
mkdirs
|
||
|
)
|
||
|
}
|
||
|
|
||
|
conf()
|
||
|
{
|
||
|
(
|
||
|
cd ${BINARY_DIR} &&
|
||
|
${SOURCE_DIR}/configure --prefix=${PREFIX}
|
||
|
)
|
||
|
}
|
||
|
|
||
|
build()
|
||
|
{
|
||
|
(
|
||
|
cd ${BINARY_DIR} &&
|
||
|
make
|
||
|
)
|
||
|
}
|
||
|
|
||
|
install()
|
||
|
{
|
||
|
(
|
||
|
cd ${BINARY_DIR} &&
|
||
|
make install DESTDIR="${INSTALL_DIR}" &&
|
||
|
mkdir -p ${INSTALL_DIR}${PREFIX}/doc/Cygwin &&
|
||
|
mkdir -p ${INSTALL_DIR}${PREFIX}/doc/${PKG}-${VER} &&
|
||
|
cp ${SOURCE_DIR}/CMake.pdf ${INSTALL_DIR}${PREFIX}/doc/${PKG}-${VER} &&
|
||
|
cp ${SOURCE_DIR}/CMake.rtf ${INSTALL_DIR}${PREFIX}/doc/${PKG}-${VER} &&
|
||
|
cp ${SOURCE_DIR}/Copyright.txt ${INSTALL_DIR}${PREFIX}/doc/${PKG}-${VER} &&
|
||
|
cp ${SOURCE_DIR}/CYGWIN-PATCHES/cmake.README \
|
||
|
${INSTALL_DIR}${PREFIX}/doc/Cygwin/${FULLPKG}.README &&
|
||
|
touch ${INSTALL_DIR}${PREFIX}/doc/${PKG}-${VER}/MANIFEST &&
|
||
|
cd ${INSTALL_DIR} &&
|
||
|
FILES=`find .${PREFIX} -type f |sed 's/^\.\//\//'` &&
|
||
|
(
|
||
|
cat >> ${INSTALL_DIR}${PREFIX}/doc/${PKG}-${VER}/MANIFEST <<EOF
|
||
|
${FILES}
|
||
|
EOF
|
||
|
)
|
||
|
)
|
||
|
}
|
||
|
|
||
|
strip()
|
||
|
{
|
||
|
(
|
||
|
cd ${INSTALL_DIR} &&
|
||
|
find . -name "*.dll" | xargs strip >/dev/null 2>&1
|
||
|
find . -name "*.exe" | xargs strip >/dev/null 2>&1
|
||
|
true
|
||
|
)
|
||
|
}
|
||
|
|
||
|
clean()
|
||
|
{
|
||
|
(
|
||
|
cd ${BINARY_DIR} &&
|
||
|
make clean
|
||
|
)
|
||
|
}
|
||
|
|
||
|
pkg()
|
||
|
{
|
||
|
(
|
||
|
cd ${INSTALL_DIR} &&
|
||
|
tar cvjf "${BINARY_PACKAGE}" *
|
||
|
)
|
||
|
}
|
||
|
|
||
|
mkpatch()
|
||
|
{
|
||
|
(
|
||
|
cd ${SOURCE_DIR} &&
|
||
|
tar xvjf "${SOURCE_TARBALL}" &&
|
||
|
mv ${PKG}-${VER} ../${PKG}-${VER}-orig &&
|
||
|
cd ${TOP_DIR} &&
|
||
|
diff -urN -x '.build' -x '.inst' -x '.sinst' \
|
||
|
"${PKG}-${VER}-orig" "${PKG}-${VER}" > "${SPKG_DIR}/${FULLPKG}.patch" ;
|
||
|
rm -rf "${TOP_DIR}/${PKG}-${VER}-orig"
|
||
|
)
|
||
|
}
|
||
|
|
||
|
spkg()
|
||
|
{
|
||
|
(
|
||
|
mkpatch &&
|
||
|
cp ${SOURCE_TARBALL} ${SPKG_DIR} &&
|
||
|
cp "$0" ${SPKG_DIR} &&
|
||
|
cd ${SPKG_DIR} &&
|
||
|
tar cvjf ${SOURCE_PACKAGE} *
|
||
|
)
|
||
|
}
|
||
|
|
||
|
finish()
|
||
|
{
|
||
|
(
|
||
|
rm -rf "${SOURCE_DIR}"
|
||
|
)
|
||
|
}
|
||
|
|
||
|
case $1 in
|
||
|
prep) prep ; STATUS=$? ;;
|
||
|
mkdirs) mkdirs ; STATUS=$? ;;
|
||
|
conf) conf ; STATUS=$? ;;
|
||
|
build) build ; STATUS=$? ;;
|
||
|
check) check ; STATUS=$? ;;
|
||
|
clean) clean ; STATUS=$? ;;
|
||
|
install) install ; STATUS=$? ;;
|
||
|
strip) strip ; STATUS=$? ;;
|
||
|
package) pkg ; STATUS=$? ;;
|
||
|
pkg) pkg ; STATUS=$? ;;
|
||
|
mkpatch) mkpatch ; STATUS=$? ;;
|
||
|
src-package) spkg ; STATUS=$? ;;
|
||
|
spkg) spkg ; STATUS=$? ;;
|
||
|
finish) finish ; STATUS=$? ;;
|
||
|
all) (
|
||
|
prep && conf && build && install && strip && pkg && spkg && finish ;
|
||
|
STATUS=$?
|
||
|
) ;;
|
||
|
*) echo "Error: bad arguments" ; exit 1 ;;
|
||
|
esac
|
||
|
exit ${STATUS}
|