#!/bin/sh #script by kingdomcome modified by jls_legalize . /etc/init.d/tc-functions checkroot export CFLAGS="-march=i486 -mtune=i686 -Os -pipe" export CXXFLAGS="-march=i486 -mtune=i686 -Os -pipe" export LDFLAGS="-Wl,-O1" TODAY=`date +%Y/%m/%d` PACKAGE="ffmpeg-ffserver" MIRROR="http://ffmpeg.org/releases/" SEP="-" VERSION="0.7.12" DESCRIPTION="a complete, cross-platform solution to record, convert and stream audio and video" AUTHORS="Fabrice Bellard" HOMEPAGE="http://ffmpeg.org/" LICENSE="GNU Lesser General Public License version 2.1" ME="jls_legalize (unsenepopiu at tin dot it)" DEPS="libasound.tcz \ libavcodec.tcz \ libavdevice.tcz \ libavformat.tcz \ libavutil.tcz \ libpostproc.tcz \ libswscale.tcz \ libavfilter.tcz \ libvpx.tcz \ jack.tcz" BUILDDEPS="libvorbis-dev.tcz \ libvpx-dev.tcz \ mktemp.tcz" FLAGS="--prefix=/usr/local \ --enable-postproc \ --enable-libvpx \ --enable-libvorbis \ --enable-shared \ --disable-yasm" DOCS="" TCUSER=`cat /etc/sysconfig/tcuser` SRC="ffmpeg${SEP}${VERSION}.tar.bz2" THISDIR=`pwd` PKGDIR="${THISDIR}/${PACKAGE}" SRCDIR="${PKGDIR}/ffmpeg${SEP}${VERSION}" TCEDIR="/etc/sysconfig/tcedir" COPYING="LICENSE" CURRENT="${TODAY} Updated to ${VERSION}" clean(){ rm -rf ${THISDIR}/${PACKAGE} } environment(){ for each in compiletc.tcz ${DEPS} ${BUILDDEPS}; do APPNAME=$(getbasefile "$each" 1) if [ ! -f /usr/local/tce.installed/"${APPNAME}" ]; then if [ ! -e ${TCEDIR}/optional/${each} ]; then sudo -u ${TCUSER} tce-load -w ${each} fi sudo -u ${TCUSER} tce-load -i ${TCEDIR}/optional/${each} fi done [ -e ${PKGDIR}/tmp ] || mkdir -p ${PKGDIR}/tmp cd ${PKGDIR} [ -e ${SRC} ] || (wget ${MIRROR}/${SRC} && tar xjf ${SRC}) } buildit(){ cd ${SRCDIR} make clean ./configure ${FLAGS} || exit 1 echo -n "Press Enter key." read gagme make || exit 1 make DESTDIR=${PKGDIR}/tmp install || exit 1 } workit(){ cd ${PKGDIR}/tmp rm -rf ${DOCS} mkdir -p usr/local/share/doc/License cp "${SRCDIR}/${COPYING}" "usr/local/share/doc/License/${PACKAGE}.txt" find usr/ | xargs file | grep "executable" | grep ELF | grep "not stripped" | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null find usr/ | xargs file | grep "shared object" | grep ELF | grep "not stripped" | cut -f 1 -d : | xargs strip -g 2> /dev/null #dev for I in $(find `ls` -name *.h); do export DIR=`dirname "$I"`; [ -d ../dev/"$DIR" ] || mkdir -p ../dev/"$DIR"; mv "$I" ../dev/"$DIR"/; done for I in $(find `ls` -name *.a); do export DIR=`dirname "$I"`; [ -d ../dev/"$DIR" ] || mkdir -p ../dev/"$DIR"; mv "$I" ../dev/"$DIR"/; done for I in $(find `ls` -name *.la); do export DIR=`dirname "$I"`; [ -d ../dev/"$DIR" ] || mkdir -p ../dev/"$DIR"; mv "$I" ../dev/"$DIR"/; done for I in $(find `ls` -name *.pc); do export DIR=`dirname "$I"`; [ -d ../dev/"$DIR" ] || mkdir -p ../dev/"$DIR"; mv "$I" ../dev/"$DIR"/; done cd ../dev/usr/local/include rm -rf ${PKGDIR}/tmp/usr/local/include rm -rf ${PKGDIR}/tmp/usr/local/lib/pkgconfig #libavcodec mkdir -p ${PKGDIR}/libavcodec/usr/local/lib mv ${PKGDIR}/tmp/usr/local/lib/libavcodec* ${PKGDIR}/libavcodec/usr/local/lib #libavdevice mkdir -p ${PKGDIR}/libavdevice/usr/local/lib mv ${PKGDIR}/tmp/usr/local/lib/libavdevice* ${PKGDIR}/libavdevice/usr/local/lib #libavformat mkdir -p ${PKGDIR}/libavformat/usr/local/lib mv ${PKGDIR}/tmp/usr/local/lib/libavformat* ${PKGDIR}/libavformat/usr/local/lib #libavutil mkdir -p ${PKGDIR}/libavutil/usr/local/lib mv ${PKGDIR}/tmp/usr/local/lib/libavutil* ${PKGDIR}/libavutil/usr/local/lib # #libpostproc # mkdir -p ${PKGDIR}/libpostproc/usr/local/lib # mv ${PKGDIR}/tmp/usr/local/lib/libpostproc* ${PKGDIR}/libpostproc/usr/local/lib #libswscale mkdir -p ${PKGDIR}/libswscale/usr/local/lib mv ${PKGDIR}/tmp/usr/local/lib/libswscale* ${PKGDIR}/libswscale/usr/local/lib #libavfilter mkdir -p ${PKGDIR}/libavfilter/usr/local/lib mv ${PKGDIR}/tmp/usr/local/lib/libavfilter* ${PKGDIR}/libavfilter/usr/local/lib } getinfo(){ cd ${PKGDIR} getMirror [ -e ${PACKAGE}.tcz.info ] && rm ${PACKAGE}.tcz.info busybox wget "$MIRROR/$PACKAGE.tcz.info" [ -e ${PACKAGE}-dev.tcz.info ] && rm ${PACKAGE}-dev.tcz.info busybox wget "$MIRROR/$PACKAGE-dev.tcz.info" [ -e libavcodec.tcz.info ] && rm libavcodec.tcz.info busybox wget "$MIRROR/libavcodec.tcz.info" [ -e libavdevice.tcz.info ] && rm libavdevice.tcz.info busybox wget "$MIRROR/libavdevice.tcz.info" [ -e libavformat.tcz.info ] && rm libavformat.tcz.info busybox wget "$MIRROR/libavformat.tcz.info" [ -e libavutil.tcz.info ] && rm libavutil.tcz.info busybox wget "$MIRROR/libavutil.tcz.info" [ -e libpostproc.tcz.info ] && rm libpostproc.tcz.info busybox wget "$MIRROR/libpostproc.tcz.info" [ -e libswscale.tcz.info ] && rm libswscale.tcz.info busybox wget "$MIRROR/libswscale.tcz.info" } packageit(){ if [ ! -f /usr/local/tce.installed/squashfs-tools-4.x ]; then if [ ! -e ${TCEDIR}/optional/squashfs-tools-4.x.tcz ]; then sudo -u ${TCUSER} tce-load -w squashfs-tools-4.x.tcz fi su ${TCUSER} -c "tce-load -is squashfs-tools-4.x.tcz" fi cd ${PKGDIR}/tmp for dir in `ls -A`; do find ${dir} -not -type d | sort >> ../${PACKAGE}.tcz.list done [ -e ../${PACKAGE}.tcz ] && rm ../${PACKAGE}.tcz mksquashfs . ../${PACKAGE}.tcz cd ${PKGDIR} md5sum ${PACKAGE}.tcz > ${PACKAGE}.tcz.md5.txt [ -e ${PACKAGE}.tcz.dep ] && rm ${PACKAGE}.tcz.dep for each in ${DEPS}; do echo ${each} >> ${PACKAGE}.tcz.dep; done size=`du -h ${PACKAGE}.tcz | cut -f 1` sed -i "s/Version:.*/Version: ${VERSION}/" ${PACKAGE}.tcz.info sed -i "s/Size:.*/Size: ${size}/" ${PACKAGE}.tcz.info sed -i "s/Current:/ /" $PACKAGE.tcz.info echo "Current: $CURRENT" >> $PACKAGE.tcz.info #dev cd ${PKGDIR}/dev for dir in `ls -A`; do find ${dir} -not -type d | sort >> ../${PACKAGE}-dev.tcz.list done [ -e ../${PACKAGE}-dev.tcz ] && rm ../${PACKAGE}-dev.tcz mksquashfs . ../${PACKAGE}-dev.tcz cd ${PKGDIR} md5sum ${PACKAGE}-dev.tcz > ${PACKAGE}-dev.tcz.md5.txt [ -f "${PACKAGE}-dev.tcz.dep" ] && rm -f ${PACKAGE}-dev.tcz.dep echo ${PACKAGE}.tcz > ${PACKAGE}-dev.tcz.dep for each in ${BUILDDEPS}; do echo ${each} >> ${PACKAGE}-dev.tcz.dep; done size=`du -h ${PACKAGE}-dev.tcz | cut -f 1` sed -i "s/Version:.*/Version: ${VERSION}/" ${PACKAGE}-dev.tcz.info sed -i "s/Size:.*/Size: ${size}/" ${PACKAGE}-dev.tcz.info sed -i "s/Current:/ /" $PACKAGE-dev.tcz.info echo "Current: $CURRENT" >> $PACKAGE-dev.tcz.info #libavcodec cd ${PKGDIR}/libavcodec for dir in `ls -A`; do find ${dir} -not -type d | sort >> ../libavcodec.tcz.list done [ -e ../libavcodec.tcz.tcz ] && rm ../libavcodec.tcz mksquashfs . ../libavcodec.tcz cd ${PKGDIR} md5sum libavcodec.tcz > libavcodec.tcz.md5.txt echo libavutil.tcz > libavcodec.tcz.dep echo libvorbis.tcz >> libavcodec.tcz.dep echo libvpx.tcz >> libavcodec.tcz.dep echo libogg.tcz >> libavcodec.tcz.dep size=`du -h libavcodec.tcz | cut -f 1` sed -i "s/Version:.*/Version: ${VERSION}/" libavcodec.tcz.info sed -i "s/Size:.*/Size: ${size}/" libavcodec.tcz.info sed -i "s/Current:/ /" libavcodec.tcz.info echo "Current: $CURRENT" >> libavcodec.tcz.info #libavdevice cd ${PKGDIR}/libavdevice for dir in `ls -A`; do find ${dir} -not -type d | sort >> ../libavdevice.tcz.list done [ -e ../libavdevice.tcz ] && rm ../libavdevice.tcz mksquashfs . ../libavdevice.tcz cd ${PKGDIR} md5sum libavdevice.tcz > libavdevice.tcz.md5.txt echo libavformat.tcz > libavdevice.tcz.dep echo libavcodec.tcz >> libavdevice.tcz.dep echo libavutil.tcz >> libavdevice.tcz.dep size=`du -h libavdevice.tcz | cut -f 1` sed -i "s/Version:.*/Version: ${VERSION}/" libavdevice.tcz.info sed -i "s/Size:.*/Size: ${size}/" libavdevice.tcz.info sed -i "s/Current:/ /" libavdevice.tcz.info echo "Current: $CURRENT" >> libavdevice.tcz.info #libavformat cd ${PKGDIR}/libavformat for dir in `ls -A`; do find ${dir} -not -type d | sort >> ../libavformat.tcz.list done [ -e ../libavformat.tcz ] && rm ../libavformat.tcz mksquashfs . ../libavformat.tcz cd ${PKGDIR} md5sum libavformat.tcz > libavformat.tcz.md5.txt echo libavcodec.tcz > libavformat.tcz.dep size=`du -h libavformat.tcz | cut -f 1` sed -i "s/Version:.*/Version: ${VERSION}/" libavformat.tcz.info sed -i "s/Size:.*/Size: ${size}/" libavformat.tcz.info sed -i "s/Current:/ /" libavformat.tcz.info echo "Current: $CURRENT" >> libavformat.tcz.info #libavutil cd ${PKGDIR}/libavutil for dir in `ls -A`; do find ${dir} -not -type d | sort >> ../libavutil.tcz.list done [ -e ../libavutil.tcz ] && rm ../libavutil.tcz mksquashfs . ../libavutil.tcz cd ${PKGDIR} md5sum libavutil.tcz > libavutil.tcz.md5.txt size=`du -h libavutil.tcz | cut -f 1` sed -i "s/Version:.*/Version: ${VERSION}/" libavutil.tcz.info sed -i "s/Size:.*/Size: ${size}/" libavutil.tcz.info sed -i "s/Current:/ /" libavutil.tcz.info echo "Current: $CURRENT" >> libavutil.tcz.info # #libpostproc # cd ${PKGDIR}/libpostproc # for dir in `ls -A`; do # find ${dir} -not -type d | sort >> ../libpostproc.tcz.list # done # # [ -e ../libpostproc.tcz ] && rm ../libpostproc.tcz # mksquashfs . ../libpostproc.tcz # # cd ${PKGDIR} # md5sum libpostproc.tcz > libpostproc.tcz.md5.txt # # echo libavutil.tcz > libipostproc.tcz.dep # # size=`du -h libpostproc.tcz | cut -f 1` # # sed -i "s/Version:.*/Version: ${VERSION}/" libpostproc.tcz.info # sed -i "s/Size:.*/Size: ${size}/" libpostproc.tcz.info # sed -i "s/Current:/ /" libpostproc.tcz.info # echo "Current: $CURRENT" >> libpostproc.tcz.info #libswscale cd ${PKGDIR}/libswscale for dir in `ls -A`; do find ${dir} -not -type d | sort >> ../libswscale.tcz.list done [ -e ../libswscale.tcz ] && rm ../libswscale.tcz mksquashfs . ../libswscale.tcz cd ${PKGDIR} md5sum libswscale.tcz > libswscale.tcz.md5.txt echo libavutil.tcz > libipostproc.tcz.dep size=`du -h libswscale.tcz | cut -f 1` sed -i "s/Version:.*/Version: ${VERSION}/" libswscale.tcz.info sed -i "s/Size:.*/Size: ${size}/" libswscale.tcz.info sed -i "s/Current:/ /" libswscale.tcz.info echo "Current: $CURRENT" >> libswscale.tcz.info #libavfilter cd ${PKGDIR}/libavfilter for dir in `ls -A`; do find ${dir} -not -type d | sort >> ../libavfilter.tcz.list done [ -e ../libavfilter.tcz ] && rm ../libavfilter.tcz mksquashfs . ../libavfilter.tcz cd ${PKGDIR} md5sum libavfilter.tcz > libavfilter.tcz.md5.txt echo libavcodec.tcz > libavfilter.tcz.dep echo libavutil.tcz >> libavfilter.tcz.dep size=`du -h libavfilter.tcz | cut -f 1` cat < libavfilter.tcz.info Title: libavfilter.tcz Description: fmpeg video filtering library Version: ${VERSION} Author: ${AUTHORS} Original-site: ${HOMEPAGE} Copying-policy: ${LICENSE} Size: ${size} Extension_by: ${ME} Tags: fmpeg video filtering library Comments: ----------------------------- Change-log: ----------------------------- Current: ${TODAY} First version EOF } checkit(){ sudo chown ${TCUSER}:staff ${THISDIR} cd ${PKGDIR} if [ ! -f /usr/local/tce.installed/submitqc4 ]; then if [ ! -e ${TCEDIR}/optional/submitqc4 ]; then sudo -u ${TCUSER} tce-load -w submitqc4 fi su ${TCUSER} -c "tce-load -is submitqc4" fi submitqc4 } tarit(){ cd ${PKGDIR} [ -f ../${PACKAGE}$SEP$VERSION.tar.xz ] && rm ../${PACKAGE}$SEP$VERSION.tar.xz cp ../${PACKAGE}.tcbuild . if [ ! -f /usr/local/tce.installed/xz ]; then if [ ! -e ${TCEDIR}/optional/xz ]; then sudo -u ${TCUSER} tce-load -w xz fi su ${TCUSER} -c "tce-load -is xz" fi [ -e ../${PACKAGE}.tar ] && rm ../${PACKAGE}.tar tar cvf ../${PACKAGE}$SEP$VERSION.tar \ ${PACKAGE}.tcz* \ ${PACKAGE}-dev.tcz* \ libavcodec.tcz* \ libavdevice.tcz* \ libavformat.tcz* \ libavutil.tcz* \ libswscale.tcz* \ libavfilter.tcz* \ ${PACKAGE}.tcbuild # libpostproc.tcz* \ cd ${THISDIR} [ -e ${PACKAGE}.tar.xz ] && rm ${PACKAGE}.tar.xz xz ${PACKAGE}$SEP$VERSION.tar } #here we go #clean environment echo -n "Next step buildit. Press Enter key." read gagme buildit echo -n "Next step workit. Press Enter key." read gagme workit echo -n "Next step getinfo. Press Enter key." read gagme getinfo echo -n "Next step packageit. Press Enter key." read gagme packageit echo -n "Next step checkit. Press Enter key." read gagme checkit tarit