Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- XBMC_PKG=xbmc-pvr
- OPENELEC_BRANCH=openelec-2.0
- OPENELEC_TAG=d1b622a377
- OPENELEC_GIT=https://github.com/OpenELEC/OpenELEC.tv.git
- ARCHS=( x86_64 )
- #ARCHS=( i386 x86_64 )
- PROJECTS=( ION Ultra )
- PVR=yes
- TOP=$PWD
- OPENELEC_DIR=$TOP/OpenELEC.tv_$OPENELEC_BRANCH
- OPENELEC_PATCHES=$TOP/OpenELEC.tv_patches
- XBMC=$1
- OPENELEC=$2
- DEBUG=$3
- if [ "$XBMC" == "" ]; then
- XBMC=tsp
- fi
- if [ "$OPENELEC" == "" ]; then
- OPENELEC=pull
- fi
- if [ "$DEBUG" == "" ]; then
- DEBUG=release
- fi
- echo "Build config:"
- echo "XBMC: ${XBMC}"
- echo "OPENELEC: ${OPENELEC}"
- echo "DEBUG: ${DEBUG}"
- GIT_TAG_NEW=null
- # Download & pack custom XBMC package
- if [ "$XBMC" == "tsp" ] || [ "$XBMC" == "ino" ]; then
- cd xbmc_pvr_$XBMC
- if [ "$DEBUG" == "debug" ]; then
- echo "Use XBMC from ${XBMC}'s source, but don't update and don't tar"
- cd ${XBMC_PKG}-latest
- GIT_TAG_NEW=`git log -n1 --format=%h`
- else
- echo "Update XBMC from ${XBMC}'s source and create tar"
- ./mkpkg_$XBMC_PKG
- GIT_TAG_NEW=`ls $XBMC_PKG-*.tar.xz | grep -v theme | cut -d'-' -f3 | cut -d'.' -f1`
- echo "Move XBMC tar to webserver"
- mv $XBMC_PKG-*.tar.xz /home/www/openelec
- fi
- echo "GIT_TAG_NEW=$GIT_TAG_NEW"
- cd $TOP
- fi
- IGNORE_XBMC_PATCHES=( xbmc-pvr-$GIT_TAG_NEW-457-fix_connection_check-0.1.patch \
- xbmc-pvr-$GIT_TAG_NEW-801.01-cec-PR570.patch \
- xbmc-pvr-$GIT_TAG_NEW-801.02-cec-fixed_possible_deadlock.patch \
- xbmc-pvr-$GIT_TAG_NEW-801.03-cec-fixed_make_sure_the_old_thread_is_stopped_before_starting_a_new_one.patch \
- xbmc-pvr-$GIT_TAG_NEW-801.04-cec-PR887.patch \
- xbmc-pvr-$GIT_TAG_NEW-806.01-cdrip-PR616.patch \
- xbmc-pvr-$GIT_TAG_NEW-806.02-cdrip-PR718.patch \
- xbmc-pvr-$GIT_TAG_NEW-901.01-ffmpeg-10.2-28b186f.patch \
- xbmc-pvr-$GIT_TAG_NEW-901.02-ffmpeg_dvd_still_frames_ended_up_in_internal_lavf_buffer.patch \
- xbmc-pvr-$GIT_TAG_NEW-901.03-ffmpeg_crystalhd_implementation.patch \
- xbmc-pvr-$GIT_TAG_NEW-901.31-ffmpeg_add_xvba_support.patch \
- xbmc-pvr-$GIT_TAG_NEW-901.32-ffmpeg_xvba_adapt_to_new_ffmpeg_fix_artifacts_for_h.264.patch \
- xbmc-pvr-$GIT_TAG_NEW-901.33-ffmpeg_xvba_xvba_vc-1_new_ffmpeg.patch \
- xbmc-pvr-$GIT_TAG_NEW-901.41-avfilter-depends-on-avformat.patch \
- xbmc-pvr-$GIT_TAG_NEW-902.00-xdpau_reset_pvr_changes.patch \
- xbmc-pvr-$GIT_TAG_NEW-902.01-xvba_support_vdpau_rework-c633159.patch \
- xbmc-pvr-$GIT_TAG_NEW-902.02-xvba_support-gcc-4.7.patch \
- xbmc-pvr-$GIT_TAG_NEW-981-toggleButtonState.patch \
- xbmc-pvr-$GIT_TAG_NEW-982-UDisk-device-must-be-remount-in-DeviceChanged-event.patch \
- xbmc-pvr-$GIT_TAG_NEW-983-fixed-failure-to-broswe-for-smb-shares.patch \
- xbmc-pvr-$GIT_TAG_NEW-990-wiimote.patch )
- if [ ! -d $OPENELEC_DIR ]; then
- mkdir $OPENELEC_DIR
- cd $OPENELEC_DIR
- git clone -b $OPENELEC_BRANCH $OPENELEC_GIT
- cd $TOP
- fi
- cd $OPENELEC_DIR
- if [ "$DEBUG" != "debug" ]; then
- echo "Clean OpenELEC clone"
- git checkout -f $OPENELEC_TAG
- if [ "$OPENELEC" == "pull" ]; then
- echo "Pulling OpenELEC from GIT"
- git pull
- fi
- fi
- # Apply local changes for custom XBMC package
- if [ "$XBMC" == "tsp" ] || [ "$XBMC" == "ino" ]; then
- echo "Take XBMC from tsp's sources"
- cd packages/mediacenter/$XBMC_PKG
- GIT_TAG_OLD=`cat meta | grep -e ^PKG_VERSION | cut -d'"' -f2`
- cd $OPENELEC_DIR
- echo "GIT_TAG_OLD=$GIT_TAG_OLD"
- if [ "$GIT_TAG_OLD" == "$GIT_TAG_NEW" ]; then
- echo "XBMC git tags didn't change, so OpenELEC patched already"
- fi
- # if [ "$DEBUG" == "debug" ]; then
- # echo "Patch XBMC build file"
- # cat ${OPENELEC_PATCHES}/debug_build_xbmc-pvr.patch | patch -N -p1
- # fi
- if [ "$GIT_TAG_OLD" != "$GIT_TAG_NEW" ]; then
- if [ -e sources/$XBMC_PKG/$XBMC_PKG-$GIT_TAG_NEW.tar.xz ]; then
- echo "Removing source tar"
- rm sources/$XBMC_PKG/$XBMC_PKG-$GIT_TAG_NEW.tar.xz*
- fi
- if [ -e sources/$XBMC_PKG-theme-Confluence/$XBMC_PKG-theme-Confluence-$GIT_TAG_NEW.tar.xz ]; then
- echo "Removing source theme tar"
- rm sources/$XBMC_PKG-theme-Confluence/$XBMC_PKG-theme-Confluence-$GIT_TAG_NEW.tar.xz*
- fi
- echo "Patch XBMC meta file"
- cd packages/mediacenter/$XBMC_PKG
- if [ ! -e meta_org ]; then
- mv meta meta_org
- fi
- cp meta_org meta
- sed -e "s/^PKG_VERSION=\"${GIT_TAG_OLD}\"/PKG_VERSION=\"${GIT_TAG_NEW}\"/g" -i meta
- sed -e "s/^PKG_URL=/#PKG_URL=/g" -i meta
- sed -e "s/^PKG_DEPENDS=/PKG_URL=\"http:\/\/www.inodekker.com\/openelec\/\$PKG_NAME-\$PKG_VERSION.tar.xz\"\nPKG_DEPENDS=/g" -i meta
- echo "###### BEGIN meta"
- cat meta
- echo "###### END meta"
- cd $OPENELEC_DIR
- echo "Rename XBMC patches that should be ignored"
- cd packages/mediacenter/$XBMC_PKG/patches
- ./rename.sh $GIT_TAG_OLD $GIT_TAG_NEW
- for IGNORE_XBMC_PATCH in "${IGNORE_XBMC_PATCHES[@]}"
- do
- if [ ! -e ${IGNORE_XBMC_PATCH} ]; then
- echo "${IGNORE_XBMC_PATCH} does not exist!"
- else
- mv ${IGNORE_XBMC_PATCH} ${IGNORE_XBMC_PATCH}_
- fi
- done
- cd $OPENELEC_DIR
- fi
- echo "Remove personal XBMC patches"
- cd ${OPENELEC_PATCHES}
- for i in `ls $XBMC_PKG-*.patch`; do
- PATCH_FILE=${OPENELEC_DIR}/packages/mediacenter/$XBMC_PKG/patches/`echo $i | sed "s,${XBMC_PKG},${XBMC_PKG}-${GIT_TAG_NEW},g"`
- if [ -e $PATCH_FILE ]; then
- rm $PATCH_FILE
- fi
- done
- if [ "$DEBUG" == "debug" ]; then
- echo "Copy personal XBMC patches"
- #git diff -u > ${OPENELEC_DIR}_patches
- for i in `ls $XBMC_PKG-$XBMC-*.patch`; do
- PATCH_FILE=${OPENELEC_DIR}/packages/mediacenter/$XBMC_PKG/patches/`echo $i | sed "s,${XBMC_PKG},${XBMC_PKG}-${GIT_TAG_NEW},g"`
- if [ -e $PATCH_FILE ]; then
- echo "Removing old patch file"
- rm $PATCH_FILE
- fi
- cp $i $PATCH_FILE
- done
- fi
- cd $OPENELEC_DIR
- if [ "$GIT_TAG_OLD" != "$GIT_TAG_NEW" ]; then
- echo "Patch XBMC Confluence theme meta file"
- cd packages/mediacenter/$XBMC_PKG-theme-Confluence
- if [ ! -e meta_org ]; then
- mv meta meta_org
- fi
- cp meta_org meta
- sed -e "s/^PKG_VERSION=\"${GIT_TAG_OLD}\"/PKG_VERSION=\"${GIT_TAG_NEW}\"/g" -i meta
- sed -e "s/^PKG_URL=/#PKG_URL=/g" -i meta
- sed -e "s/^PKG_DEPENDS=/PKG_URL=\"http:\/\/192.168.1.253\/openelec\/\$PKG_NAME-\$PKG_VERSION.tar.xz\"\nPKG_DEPENDS=/g" -i meta
- echo "###### BEGIN meta"
- cat meta
- echo "###### END meta"
- cd $OPENELEC_DIR
- echo "Patch boost build file"
- cd packages/devel/boost
- patch -b --suffix=_org build ${OPENELEC_PATCHES}/openelec_boost_filesystem.patch
- echo "###### BEGIN build"
- cat build
- echo "###### END build"
- cd $OPENELEC_DIR
- echo "Patch XBMC build file"
- cat ${OPENELEC_PATCHES}/xbmc-pvr-disable_libavcodec_codec_names_script.patch | patch -N -p1
- fi
- fi
- # Build OpenELEC
- echo "Start building OpenELEC"
- BUILD_DATE=`date +%Y%m%d%H%M%S`
- OPENELEC_VERSION=`cat config/version | grep OPENELEC_VERSION | cut -d'"' -f2`
- TARGET_SUFFIX=${XBMC_PKG}-${XBMC}-${GIT_TAG_NEW}-${BUILD_DATE}
- if [ "$DEBUG" == "debug" ]; then
- TARGET_SUFFIX=${TARGET_SUFFIX}-debug
- fi
- for PROJECT in "${PROJECTS[@]}"; do
- for ARCH in "${ARCHS[@]}"; do
- export PVR
- export PROJECT
- export ARCH
- ionice -c 3 nice -5 make release > build_${PROJECT}_${ARCH}.txt 2>&1
- echo "Done" >> build_${PROJECT}_${ARCH}.txt
- if [ "$OPENELEC_BRANCH" != "master" ]; then
- PROJECT_NAME=OpenELEC-${PROJECT}.${ARCH}-${OPENELEC_VERSION}
- if [ "$PVR" == "yes" ]; then
- PROJECT_NAME=OpenELEC_PVR-${PROJECT}.${ARCH}-${OPENELEC_VERSION}
- fi
- cd target
- if [ -e ${PROJECT_NAME}.kernel ] && [ -e ${PROJECT_NAME}.system ]; then
- echo "Rename target files."
- mv ${PROJECT_NAME}.kernel ${PROJECT_NAME}-${TARGET_SUFFIX}.kernel
- mv ${PROJECT_NAME}.system ${PROJECT_NAME}-${TARGET_SUFFIX}.system
- if [ -e ${PROJECT_NAME}.tar.bz2 ]; then
- mv ${PROJECT_NAME}.tar.bz2 ${PROJECT_NAME}-${TARGET_SUFFIX}.tar.bz2
- fi
- else
- echo "Kernel and/or system file(s) does not exist, build must have failed."
- fi
- cd $OPENELEC_DIR
- fi
- done
- done
- echo "Finish building OpenELEC"
- # Undo local changes
- if [ "$DEBUG" != "debug" ]; then
- # echo "Unpatch XBMC build file"
- # cat ${OPENELEC_PATCHES}/debug_build_xbmc-pvr.patch | patch -R -p1
- echo "Unpatch XBMC meta file"
- cd packages/mediacenter/$XBMC_PKG
- mv meta_org meta
- if [ -e build_org ]; then
- mv build_org build
- fi
- cd $OPENELEC_DIR
- echo "Remove personal XBMC patches"
- cd ${OPENELEC_PATCHES}
- for i in `ls $XBMC_PKG-*.patch`; do
- PATCH_FILE=${OPENELEC_DIR}/packages/mediacenter/$XBMC_PKG/patches/`echo $i | sed "s,${XBMC_PKG},${XBMC_PKG}-${GIT_TAG_NEW},g"`
- if [ -e $PATCH_FILE ]; then
- rm $PATCH_FILE
- fi
- done
- cd $OPENELEC_DIR
- echo "Restore XBMC patches back to original state"
- cd packages/mediacenter/$XBMC_PKG/patches
- for IGNORE_XBMC_PATCH in "${IGNORE_XBMC_PATCHES[@]}"
- do
- if [ ! -e "${IGNORE_XBMC_PATCH}_" ]; then
- echo "${IGNORE_XBMC_PATCH}_ does not exist!"
- else
- mv ${IGNORE_XBMC_PATCH}_ ${IGNORE_XBMC_PATCH}
- fi
- done
- ./rename.sh $GIT_TAG_NEW $GIT_TAG_OLD
- cd $OPENELEC_DIR
- echo "Unpatch XBMC Confluence theme meta file"
- cd packages/mediacenter/$XBMC_PKG-theme-Confluence
- mv meta_org meta
- cd $OPENELEC_DIR
- echo "Unpatch boost build file"
- cd packages/devel/boost
- mv build_org build
- cd $OPENELEC_DIR
- echo "Unpatch XBMC build file"
- cat ${OPENELEC_PATCHES}/xbmc-pvr-disable_libavcodec_codec_names_script.patch | patch -R -p1
- fi
- cd $TOP
- echo "Finished!"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement