aboutsummaryrefslogtreecommitdiff
path: root/tools/buildsteps
diff options
context:
space:
mode:
Diffstat (limited to 'tools/buildsteps')
-rw-r--r--tools/buildsteps/android/configure-depends2
-rw-r--r--tools/buildsteps/android/make-binary-addons24
-rw-r--r--tools/buildsteps/android/make-depends4
-rw-r--r--tools/buildsteps/android/make-native-depends9
-rw-r--r--tools/buildsteps/android/prepare-depends6
-rw-r--r--tools/buildsteps/android/prepare-xbmc3
-rw-r--r--tools/buildsteps/androidx86/configure-depends2
-rw-r--r--tools/buildsteps/androidx86/make-binary-addons24
-rw-r--r--tools/buildsteps/androidx86/make-depends4
-rw-r--r--tools/buildsteps/androidx86/make-native-depends9
-rw-r--r--tools/buildsteps/androidx86/prepare-depends6
-rw-r--r--tools/buildsteps/androidx86/prepare-xbmc3
-rwxr-xr-xtools/buildsteps/atv2/configure-depends3
-rwxr-xr-xtools/buildsteps/atv2/make-binary-addons24
-rwxr-xr-xtools/buildsteps/atv2/make-native-depends9
-rwxr-xr-xtools/buildsteps/atv2/make-xbmc1
-rwxr-xr-xtools/buildsteps/atv2/prepare-depends6
-rwxr-xr-xtools/buildsteps/atv2/prepare-xbmc3
-rw-r--r--tools/buildsteps/defaultenv32
-rwxr-xr-xtools/buildsteps/ios/configure-depends2
-rwxr-xr-xtools/buildsteps/ios/make-binary-addons24
-rwxr-xr-xtools/buildsteps/ios/make-depends4
-rwxr-xr-xtools/buildsteps/ios/make-native-depends9
-rwxr-xr-xtools/buildsteps/ios/prepare-depends5
-rwxr-xr-xtools/buildsteps/ios/prepare-xbmc3
-rwxr-xr-xtools/buildsteps/linux32/configure-depends2
-rwxr-xr-xtools/buildsteps/linux32/configure-xbmc2
-rwxr-xr-xtools/buildsteps/linux32/make-binary-addons24
-rwxr-xr-xtools/buildsteps/linux32/make-depends4
-rwxr-xr-xtools/buildsteps/linux32/make-native-depends9
-rwxr-xr-xtools/buildsteps/linux32/make-xbmc2
-rwxr-xr-xtools/buildsteps/linux32/package5
-rwxr-xr-xtools/buildsteps/linux32/prepare-depends6
-rwxr-xr-xtools/buildsteps/linux32/prepare-xbmc3
-rwxr-xr-xtools/buildsteps/linux64/configure-depends2
-rwxr-xr-xtools/buildsteps/linux64/make-binary-addons24
-rwxr-xr-xtools/buildsteps/linux64/make-depends4
-rwxr-xr-xtools/buildsteps/linux64/make-native-depends9
-rwxr-xr-xtools/buildsteps/linux64/prepare-depends6
-rwxr-xr-xtools/buildsteps/linux64/prepare-xbmc3
-rwxr-xr-xtools/buildsteps/osx32/configure-depends2
-rwxr-xr-xtools/buildsteps/osx32/make-binary-addons24
-rwxr-xr-xtools/buildsteps/osx32/make-depends4
-rwxr-xr-xtools/buildsteps/osx32/make-native-depends9
-rwxr-xr-xtools/buildsteps/osx32/prepare-depends5
-rwxr-xr-xtools/buildsteps/osx32/prepare-xbmc3
-rwxr-xr-xtools/buildsteps/osx64/configure-depends2
-rwxr-xr-xtools/buildsteps/osx64/make-binary-addons24
-rwxr-xr-xtools/buildsteps/osx64/make-depends4
-rwxr-xr-xtools/buildsteps/osx64/make-native-depends9
-rwxr-xr-xtools/buildsteps/osx64/prepare-depends5
-rwxr-xr-xtools/buildsteps/osx64/prepare-xbmc3
-rwxr-xr-xtools/buildsteps/rbpi/configure-depends2
-rwxr-xr-xtools/buildsteps/rbpi/make-binary-addons24
-rwxr-xr-xtools/buildsteps/rbpi/make-depends4
-rwxr-xr-xtools/buildsteps/rbpi/make-native-depends9
-rwxr-xr-xtools/buildsteps/rbpi/prepare-depends8
-rwxr-xr-xtools/buildsteps/rbpi/prepare-xbmc3
58 files changed, 394 insertions, 76 deletions
diff --git a/tools/buildsteps/android/configure-depends b/tools/buildsteps/android/configure-depends
index 344750c04e..746c11f73d 100644
--- a/tools/buildsteps/android/configure-depends
+++ b/tools/buildsteps/android/configure-depends
@@ -7,7 +7,7 @@ NDK_ARCH="arm"
CURRENT_NDK_PATH=$ANDROID_DEV_ROOT/android-ndk-r$NDK_VERSION
CURRENT_TOOLCHAIN=$ANDROID_DEV_ROOT/android-toolchain-$NDK_ARCH-$SDK_VERSION-r$NDK_VERSION
-if [ "$(rebuildDepends)" == "1" ]
+if [ "$(pathChanged $WORKSPACE/tools/depends)" == "1" ]
then
cd $WORKSPACE/tools/depends;./configure \
--with-tarballs=$TARBALLS \
diff --git a/tools/buildsteps/android/make-binary-addons b/tools/buildsteps/android/make-binary-addons
new file mode 100644
index 0000000000..0ded6d3273
--- /dev/null
+++ b/tools/buildsteps/android/make-binary-addons
@@ -0,0 +1,24 @@
+WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
+XBMC_PLATFORM_DIR=android
+. $WORKSPACE/tools/buildsteps/defaultenv
+
+. $WORKSPACE/tools/buildsteps/$XBMC_PLATFORM_DIR/make-native-depends
+
+for addon in $BINARY_ADDONS
+do
+ ALL_BINARY_ADDONS_BUILT="1"
+ #only build binary addons if something in the addons metadata changed
+ if [ "$(pathChanged $WORKSPACE/project/cmake)" == "1" ]
+ then
+ echo "building $addon"
+ git clean -xffd $WORKSPACE/$BINARY_ADDONS_ROOT/$addon
+ cd $WORKSPACE/$BINARY_ADDONS_ROOT/$addon;make -j $BUILDTHREADS || ALL_BINARY_ADDONS_BUILT="0"
+ fi
+done
+if [ "$ALL_BINARY_ADDONS_BUILT" == "1" ]
+then
+ tagSuccessFulBuild $WORKSPACE/project/cmake
+else
+ #make jenkins fail
+ exit 1
+fi
diff --git a/tools/buildsteps/android/make-depends b/tools/buildsteps/android/make-depends
index 2d5509e7ac..c5869b26e2 100644
--- a/tools/buildsteps/android/make-depends
+++ b/tools/buildsteps/android/make-depends
@@ -2,8 +2,8 @@ WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
XBMC_PLATFORM_DIR=android
. $WORKSPACE/tools/buildsteps/defaultenv
-if [ "$(rebuildDepends)" == "1" ]
+if [ "$(pathChanged $WORKSPACE/tools/depends)" == "1" ]
then
- cd $WORKSPACE/tools/depends;make -j $BUILDTHREADS && tagSuccessFulDependsBuild
+ cd $WORKSPACE/tools/depends;make -j $BUILDTHREADS && tagSuccessFulBuild $WORKSPACE/tools/depends
fi
diff --git a/tools/buildsteps/android/make-native-depends b/tools/buildsteps/android/make-native-depends
new file mode 100644
index 0000000000..f67ced0eef
--- /dev/null
+++ b/tools/buildsteps/android/make-native-depends
@@ -0,0 +1,9 @@
+WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
+XBMC_PLATFORM_DIR=android
+. $WORKSPACE/tools/buildsteps/defaultenv
+
+if [ "$(pathChanged $WORKSPACE/tools/depends)" == "1" ]
+then
+ git clean -xffd $WORKSPACE/tools/depends/native
+ cd $WORKSPACE/tools/depends/native;make -j $BUILDTHREADS && tagSuccessFulBuild $WORKSPACE/tools/depends
+fi
diff --git a/tools/buildsteps/android/prepare-depends b/tools/buildsteps/android/prepare-depends
index babe7e4d63..933ea4592e 100644
--- a/tools/buildsteps/android/prepare-depends
+++ b/tools/buildsteps/android/prepare-depends
@@ -3,9 +3,11 @@ XBMC_PLATFORM_DIR=android
. $WORKSPACE/tools/buildsteps/defaultenv
#clean without depends for skipping depends build if possible
-cd $WORKSPACE;git clean -xfd -e "project/cmake/.last_success_revision" -e "tools/depends"
+#also skip binary addons (pvr, audioencoder) as long as they are deployed in tree
+cd $WORKSPACE;git clean -xfd -e "project/cmake/.last_success_revision" -e "tools/depends" ${DEPLOYED_BINARY_ADDONS}
-if [ "$(rebuildDepends)" == "1" ]
+# if depends path has changed - cleanout everything and do a full rebuild
+if [ "$(pathChanged $WORKSPACE/tools/depends)" == "1" ]
then
#clean up the rest too
cd $WORKSPACE;git clean -xffd
diff --git a/tools/buildsteps/android/prepare-xbmc b/tools/buildsteps/android/prepare-xbmc
index 3a82e5c600..b6402ee3c9 100644
--- a/tools/buildsteps/android/prepare-xbmc
+++ b/tools/buildsteps/android/prepare-xbmc
@@ -9,3 +9,6 @@ then
rm -r $WORKSPACE/addons/skin.re-touched
fi
git submodule update --init $WORKSPACE/addons/skin.re-touched
+
+#build binary addons before building xbmc...
+. $WORKSPACE/tools/buildsteps/$XBMC_PLATFORM_DIR/make-binary-addons
diff --git a/tools/buildsteps/androidx86/configure-depends b/tools/buildsteps/androidx86/configure-depends
index 89fd36f34b..5c35987fad 100644
--- a/tools/buildsteps/androidx86/configure-depends
+++ b/tools/buildsteps/androidx86/configure-depends
@@ -7,7 +7,7 @@ NDK_ARCH=x86
CURRENT_NDK_PATH=$ANDROID_DEV_ROOT/android-ndk-r$NDK_VERSION
CURRENT_TOOLCHAIN=$ANDROID_DEV_ROOT/android-toolchain-$NDK_ARCH-$SDK_VERSION-r$NDK_VERSION
-if [ "$(rebuildDepends)" == "1" ]
+if [ "$(pathChanged $WORKSPACE/tools/depends)" == "1" ]
then
cd $WORKSPACE/tools/depends;./configure \
--with-tarballs=$TARBALLS \
diff --git a/tools/buildsteps/androidx86/make-binary-addons b/tools/buildsteps/androidx86/make-binary-addons
new file mode 100644
index 0000000000..f14a84062d
--- /dev/null
+++ b/tools/buildsteps/androidx86/make-binary-addons
@@ -0,0 +1,24 @@
+WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
+XBMC_PLATFORM_DIR=android
+. $WORKSPACE/tools/buildsteps/defaultenv
+
+. $WORKSPACE/tools/buildsteps/$XBMC_PLATFORM_DIR/make-native-depends
+
+for addon in $BINARY_ADDONS
+do
+ ALL_BINARY_ADDONS_BUILT="1"
+ #only build binary addons if something in the addons metadata changed
+ if [ "$(pathChanged $WORKSPACE/project/cmake)" == "1" ]
+ then
+ echo "building $addon"
+ git clean -xffd $WORKSPACE/$BINARY_ADDONS_ROOT/$addon
+ cd $WORKSPACE/$BINARY_ADDONS_ROOT/$addon;make -j $BUILDTHREADS || ALL_BINARY_ADDONS_BUILT="0"
+ fi
+done
+if [ "$ALL_BINARY_ADDONS_BUILT" == "1" ]
+then
+ tagSuccessFulBuild $WORKSPACE/project/cmake
+else
+ #make jenkins fail
+ exit 1
+fi
diff --git a/tools/buildsteps/androidx86/make-depends b/tools/buildsteps/androidx86/make-depends
index 2d5509e7ac..c5869b26e2 100644
--- a/tools/buildsteps/androidx86/make-depends
+++ b/tools/buildsteps/androidx86/make-depends
@@ -2,8 +2,8 @@ WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
XBMC_PLATFORM_DIR=android
. $WORKSPACE/tools/buildsteps/defaultenv
-if [ "$(rebuildDepends)" == "1" ]
+if [ "$(pathChanged $WORKSPACE/tools/depends)" == "1" ]
then
- cd $WORKSPACE/tools/depends;make -j $BUILDTHREADS && tagSuccessFulDependsBuild
+ cd $WORKSPACE/tools/depends;make -j $BUILDTHREADS && tagSuccessFulBuild $WORKSPACE/tools/depends
fi
diff --git a/tools/buildsteps/androidx86/make-native-depends b/tools/buildsteps/androidx86/make-native-depends
new file mode 100644
index 0000000000..549ad2becb
--- /dev/null
+++ b/tools/buildsteps/androidx86/make-native-depends
@@ -0,0 +1,9 @@
+WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
+XBMC_PLATFORM_DIR=android
+. $WORKSPACE/tools/buildsteps/defaultenv
+
+if [ "$(pathChanged $WORKSPACE/tools/depends)" == "1" ]
+then
+ git clean -xffd $WORKSPACE/tools/depends/native
+ cd $WORKSPACE/tools/depends/native;make -j $BUILDTHREADS && tagSuccessFulBuild $WORKSPACE/tools/depends
+fi \ No newline at end of file
diff --git a/tools/buildsteps/androidx86/prepare-depends b/tools/buildsteps/androidx86/prepare-depends
index babe7e4d63..933ea4592e 100644
--- a/tools/buildsteps/androidx86/prepare-depends
+++ b/tools/buildsteps/androidx86/prepare-depends
@@ -3,9 +3,11 @@ XBMC_PLATFORM_DIR=android
. $WORKSPACE/tools/buildsteps/defaultenv
#clean without depends for skipping depends build if possible
-cd $WORKSPACE;git clean -xfd -e "project/cmake/.last_success_revision" -e "tools/depends"
+#also skip binary addons (pvr, audioencoder) as long as they are deployed in tree
+cd $WORKSPACE;git clean -xfd -e "project/cmake/.last_success_revision" -e "tools/depends" ${DEPLOYED_BINARY_ADDONS}
-if [ "$(rebuildDepends)" == "1" ]
+# if depends path has changed - cleanout everything and do a full rebuild
+if [ "$(pathChanged $WORKSPACE/tools/depends)" == "1" ]
then
#clean up the rest too
cd $WORKSPACE;git clean -xffd
diff --git a/tools/buildsteps/androidx86/prepare-xbmc b/tools/buildsteps/androidx86/prepare-xbmc
index 3a82e5c600..b6402ee3c9 100644
--- a/tools/buildsteps/androidx86/prepare-xbmc
+++ b/tools/buildsteps/androidx86/prepare-xbmc
@@ -9,3 +9,6 @@ then
rm -r $WORKSPACE/addons/skin.re-touched
fi
git submodule update --init $WORKSPACE/addons/skin.re-touched
+
+#build binary addons before building xbmc...
+. $WORKSPACE/tools/buildsteps/$XBMC_PLATFORM_DIR/make-binary-addons
diff --git a/tools/buildsteps/atv2/configure-depends b/tools/buildsteps/atv2/configure-depends
index 2c9aa26b4e..e12bc54f97 100755
--- a/tools/buildsteps/atv2/configure-depends
+++ b/tools/buildsteps/atv2/configure-depends
@@ -2,7 +2,7 @@ WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
XBMC_PLATFORM_DIR=atv2
. $WORKSPACE/tools/buildsteps/defaultenv
-if [ "$(rebuildDepends)" == "1" ]
+if [ "$(pathChanged $WORKSPACE/tools/depends)" == "1" ]
then
cd $WORKSPACE/tools/depends;./configure \
--with-tarballs=/Users/Shared/xbmc-depends/tarballs \
@@ -10,4 +10,3 @@ then
--with-sdk=$SDK_VERSION \
--prefix=$XBMC_DEPENDS_ROOT
fi
-
diff --git a/tools/buildsteps/atv2/make-binary-addons b/tools/buildsteps/atv2/make-binary-addons
new file mode 100755
index 0000000000..fd95a8729c
--- /dev/null
+++ b/tools/buildsteps/atv2/make-binary-addons
@@ -0,0 +1,24 @@
+WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
+XBMC_PLATFORM_DIR=atv2
+. $WORKSPACE/tools/buildsteps/defaultenv
+
+. $WORKSPACE/tools/buildsteps/$XBMC_PLATFORM_DIR/make-native-depends
+
+for addon in $BINARY_ADDONS
+do
+ ALL_BINARY_ADDONS_BUILT="1"
+ #only build binary addons if something in the addons metadata changed
+ if [ "$(pathChanged $WORKSPACE/project/cmake)" == "1" ]
+ then
+ echo "building $addon"
+ git clean -xffd $WORKSPACE/$BINARY_ADDONS_ROOT/$addon
+ cd $WORKSPACE/$BINARY_ADDONS_ROOT/$addon;make -j $BUILDTHREADS || ALL_BINARY_ADDONS_BUILT="0"
+ fi
+done
+if [ "$ALL_BINARY_ADDONS_BUILT" == "1" ]
+then
+ tagSuccessFulBuild $WORKSPACE/project/cmake
+else
+ #make jenkins fail
+ exit 1
+fi
diff --git a/tools/buildsteps/atv2/make-native-depends b/tools/buildsteps/atv2/make-native-depends
new file mode 100755
index 0000000000..416c14f3cb
--- /dev/null
+++ b/tools/buildsteps/atv2/make-native-depends
@@ -0,0 +1,9 @@
+WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
+XBMC_PLATFORM_DIR=atv2
+. $WORKSPACE/tools/buildsteps/defaultenv
+
+if [ "$(pathChanged $WORKSPACE/tools/depends)" == "1" ]
+then
+ git clean -xffd $WORKSPACE/tools/depends/native
+ cd $WORKSPACE/tools/depends/native;make -j $BUILDTHREADS && tagSuccessFulBuild $WORKSPACE/tools/depends
+fi \ No newline at end of file
diff --git a/tools/buildsteps/atv2/make-xbmc b/tools/buildsteps/atv2/make-xbmc
index 2368622cc3..4f03e615c1 100755
--- a/tools/buildsteps/atv2/make-xbmc
+++ b/tools/buildsteps/atv2/make-xbmc
@@ -6,3 +6,4 @@ cd $WORKSPACE;make -j$BUILDTHREADS xcode_depends
cd $WORKSPACE;xcodebuild -project Kodi.xcodeproj -target Kodi-ATV2 -configuration $Configuration build \
ONLY_ACTIVE_ARCH=YES ARCHS=armv7 VALID_ARCHS=armv7 \
SDKROOT=iphoneos$SDK_VERSION XBMC_DEPENDS_ROOT=$XBMC_DEPENDS_ROOT CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO
+
diff --git a/tools/buildsteps/atv2/prepare-depends b/tools/buildsteps/atv2/prepare-depends
index 3224fcf5ad..c390d3bb76 100755
--- a/tools/buildsteps/atv2/prepare-depends
+++ b/tools/buildsteps/atv2/prepare-depends
@@ -4,12 +4,12 @@ XBMC_PLATFORM_DIR=atv2
#clean without depends for skipping depends build if possible
#also skip binary addons (pvr, audioencoder) as long as they are deployed in tree
-cd $WORKSPACE;git clean -xfd -e "project/cmake/.last_success_revision" -e "tools/depends" -e "addons/pvr.*" -e "addons/audioencoder.*"
+cd $WORKSPACE;git clean -xfd -e "project/cmake/.last_success_revision" -e "tools/depends" ${DEPLOYED_BINARY_ADDONS}
-if [ "$(rebuildDepends)" == "1" ]
+# if depends path has changed - cleanout everything and do a full rebuild
+if [ "$(pathChanged $WORKSPACE/tools/depends)" == "1" ]
then
#clean up the rest too
cd $WORKSPACE;git clean -xffd
cd $WORKSPACE/tools/depends/;./bootstrap
fi
-
diff --git a/tools/buildsteps/atv2/prepare-xbmc b/tools/buildsteps/atv2/prepare-xbmc
index c3738f9e7a..b24df067fd 100755
--- a/tools/buildsteps/atv2/prepare-xbmc
+++ b/tools/buildsteps/atv2/prepare-xbmc
@@ -2,5 +2,6 @@ WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
XBMC_PLATFORM_DIR=atv2
. $WORKSPACE/tools/buildsteps/defaultenv
-#nothing on ios
+#build binary addons before building xbmc...
+. $WORKSPACE/tools/buildsteps/$XBMC_PLATFORM_DIR/make-binary-addons
diff --git a/tools/buildsteps/defaultenv b/tools/buildsteps/defaultenv
index 6b9f29d583..b6db1b08f7 100644
--- a/tools/buildsteps/defaultenv
+++ b/tools/buildsteps/defaultenv
@@ -7,6 +7,10 @@ PATH_CHANGE_REV_FILENAME=".last_success_revision"
#TARBALLS ENV-VAR is only used by android scripts atm
TARBALLS=${TARBALLS:-"/opt/xbmc-tarballs"}
+BINARY_ADDONS_ROOT=tools/depends/target
+BINARY_ADDONS="xbmc-audioencoder-addons xbmc-pvr-addons"
+DEPLOYED_BINARY_ADDONS="-e addons"
+
#set platform defaults
#$XBMC_PLATFORM_DIR matches the platform subdirs!
case $XBMC_PLATFORM_DIR in
@@ -76,6 +80,7 @@ fi
#helper functions
#hash a dir based on the git revision, SDK_PATH, NDK_PATH, NDK_VERSION, SDK_VERSION, TOOLCHAIN TOOLCHAIN_X86 (for droidx86) and XBMC_DEPENDS_ROOT
+#param1 path to be hashed
function getBuildHash ()
{
local checkPath
@@ -86,6 +91,7 @@ function getBuildHash ()
echo $hashStr
}
+#param1 path to be checked for changes
function pathChanged ()
{
local ret
@@ -112,26 +118,14 @@ function pathChanged ()
echo $ret
}
-function rebuildDepends ()
-{
- local ret
- ret="0"
- # check if depends need to be rebuilt - this is done by checking last
- # successfull build revision of depends and cmake dir
- if [ "$(pathChanged $WORKSPACE/tools/depends)" == "1" ] || [ "$(pathChanged $WORKSPACE/project/cmake)" == "1" ]
- then
- ret="1"
- fi
-
- echo $ret
-}
-
-function tagSuccessFulDependsBuild ()
+#param1 path to be tagged with hash
+function tagSuccessFulBuild ()
{
- # tag last successful build of depends by marking the revisions of depends and cmake dir
- # needs to match the checks in function rebuildDepends
- echo "$(getBuildHash $WORKSPACE/tools/depends)" > $WORKSPACE/tools/depends/$PATH_CHANGE_REV_FILENAME
- echo "$(getBuildHash $WORKSPACE/project/cmake)" > $WORKSPACE/project/cmake/$PATH_CHANGE_REV_FILENAME
+ local pathToTag
+ pathToTag="$1"
+ # tag last successful build with revisions of the given dir
+ # needs to match the checks in function getBuildHash
+ echo "$(getBuildHash $pathToTag)" > $pathToTag/$PATH_CHANGE_REV_FILENAME
}
function getBranchName ()
diff --git a/tools/buildsteps/ios/configure-depends b/tools/buildsteps/ios/configure-depends
index 998f80a354..d09f0cb269 100755
--- a/tools/buildsteps/ios/configure-depends
+++ b/tools/buildsteps/ios/configure-depends
@@ -2,7 +2,7 @@ WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
XBMC_PLATFORM_DIR=ios
. $WORKSPACE/tools/buildsteps/defaultenv
-if [ "$(rebuildDepends)" == "1" ]
+if [ "$(pathChanged $WORKSPACE/tools/depends)" == "1" ]
then
cd $WORKSPACE/tools/depends;./configure \
--with-tarballs=/Users/Shared/xbmc-depends/tarballs \
diff --git a/tools/buildsteps/ios/make-binary-addons b/tools/buildsteps/ios/make-binary-addons
new file mode 100755
index 0000000000..b811b6d311
--- /dev/null
+++ b/tools/buildsteps/ios/make-binary-addons
@@ -0,0 +1,24 @@
+WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
+XBMC_PLATFORM_DIR=ios
+. $WORKSPACE/tools/buildsteps/defaultenv
+
+. $WORKSPACE/tools/buildsteps/$XBMC_PLATFORM_DIR/make-native-depends
+
+for addon in $BINARY_ADDONS
+do
+ ALL_BINARY_ADDONS_BUILT="1"
+ #only build binary addons if something in the addons metadata changed
+ if [ "$(pathChanged $WORKSPACE/project/cmake)" == "1" ]
+ then
+ echo "building $addon"
+ git clean -xffd $WORKSPACE/$BINARY_ADDONS_ROOT/$addon
+ cd $WORKSPACE/$BINARY_ADDONS_ROOT/$addon;make -j $BUILDTHREADS || ALL_BINARY_ADDONS_BUILT="0"
+ fi
+done
+if [ "$ALL_BINARY_ADDONS_BUILT" == "1" ]
+then
+ tagSuccessFulBuild $WORKSPACE/project/cmake
+else
+ #make jenkins fail
+ exit 1
+fi
diff --git a/tools/buildsteps/ios/make-depends b/tools/buildsteps/ios/make-depends
index ce3bdf6bc3..eb36ee2a16 100755
--- a/tools/buildsteps/ios/make-depends
+++ b/tools/buildsteps/ios/make-depends
@@ -2,8 +2,8 @@ WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
XBMC_PLATFORM_DIR=ios
. $WORKSPACE/tools/buildsteps/defaultenv
-if [ "$(rebuildDepends)" == "1" ]
+if [ "$(pathChanged $WORKSPACE/tools/depends)" == "1" ]
then
- cd $WORKSPACE/tools/depends;make -j $BUILDTHREADS && tagSuccessFulDependsBuild
+ cd $WORKSPACE/tools/depends;make -j $BUILDTHREADS && tagSuccessFulBuild $WORKSPACE/tools/depends
fi
diff --git a/tools/buildsteps/ios/make-native-depends b/tools/buildsteps/ios/make-native-depends
new file mode 100755
index 0000000000..36ebea8bb3
--- /dev/null
+++ b/tools/buildsteps/ios/make-native-depends
@@ -0,0 +1,9 @@
+WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
+XBMC_PLATFORM_DIR=ios
+. $WORKSPACE/tools/buildsteps/defaultenv
+
+if [ "$(pathChanged $WORKSPACE/tools/depends)" == "1" ]
+then
+ git clean -xffd $WORKSPACE/tools/depends/native
+ cd $WORKSPACE/tools/depends/native;make -j $BUILDTHREADS && tagSuccessFulBuild $WORKSPACE/tools/depends
+fi \ No newline at end of file
diff --git a/tools/buildsteps/ios/prepare-depends b/tools/buildsteps/ios/prepare-depends
index ff83e1213d..01aa9ed766 100755
--- a/tools/buildsteps/ios/prepare-depends
+++ b/tools/buildsteps/ios/prepare-depends
@@ -4,9 +4,10 @@ XBMC_PLATFORM_DIR=ios
#clean without depends for skipping depends build if possible
#also skip binary addons (pvr, audioencoder) as long as they are deployed in tree
-cd $WORKSPACE;git clean -xfd -e "project/cmake/.last_success_revision" -e "tools/depends" -e "addons/pvr.*" -e "addons/audioencoder.*"
+cd $WORKSPACE;git clean -xfd -e "project/cmake/.last_success_revision" -e "tools/depends" ${DEPLOYED_BINARY_ADDONS}
-if [ "$(rebuildDepends)" == "1" ]
+# if depends path has changed - cleanout everything and do a full rebuild
+if [ "$(pathChanged $WORKSPACE/tools/depends)" == "1" ]
then
#clean up the rest too
cd $WORKSPACE;git clean -xffd
diff --git a/tools/buildsteps/ios/prepare-xbmc b/tools/buildsteps/ios/prepare-xbmc
index 1b93c2bdb7..9497ceab6b 100755
--- a/tools/buildsteps/ios/prepare-xbmc
+++ b/tools/buildsteps/ios/prepare-xbmc
@@ -9,3 +9,6 @@ then
rm -r $WORKSPACE/addons/skin.re-touched
fi
git submodule update --init $WORKSPACE/addons/skin.re-touched
+
+#build binary addons before building xbmc...
+. $WORKSPACE/tools/buildsteps/$XBMC_PLATFORM_DIR/make-binary-addons
diff --git a/tools/buildsteps/linux32/configure-depends b/tools/buildsteps/linux32/configure-depends
index 9382b9514e..4e143d6992 100755
--- a/tools/buildsteps/linux32/configure-depends
+++ b/tools/buildsteps/linux32/configure-depends
@@ -2,7 +2,7 @@ WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
XBMC_PLATFORM_DIR=linux32
. $WORKSPACE/tools/buildsteps/defaultenv
-if [ "$(rebuildDepends)" == "1" ]
+if [ "$(pathChanged $WORKSPACE/tools/depends)" == "1" ]
then
cd $WORKSPACE/tools/depends;./configure \
--with-toolchain=/usr --prefix=$XBMC_DEPENDS_ROOT --host=i686-linux-gnu --with-tarballs=$TARBALLS
diff --git a/tools/buildsteps/linux32/configure-xbmc b/tools/buildsteps/linux32/configure-xbmc
index 5e532760bf..de0247a9cf 100755
--- a/tools/buildsteps/linux32/configure-xbmc
+++ b/tools/buildsteps/linux32/configure-xbmc
@@ -2,4 +2,4 @@ WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
XBMC_PLATFORM_DIR=linux32
. $WORKSPACE/tools/buildsteps/defaultenv
-cd $WORKSPACE/;./configure
+make -C $WORKSPACE/tools/depends/target/xbmc
diff --git a/tools/buildsteps/linux32/make-binary-addons b/tools/buildsteps/linux32/make-binary-addons
new file mode 100755
index 0000000000..f45ca3f9d3
--- /dev/null
+++ b/tools/buildsteps/linux32/make-binary-addons
@@ -0,0 +1,24 @@
+WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
+XBMC_PLATFORM_DIR=linux32
+. $WORKSPACE/tools/buildsteps/defaultenv
+
+. $WORKSPACE/tools/buildsteps/$XBMC_PLATFORM_DIR/make-native-depends
+
+for addon in $BINARY_ADDONS
+do
+ ALL_BINARY_ADDONS_BUILT="1"
+ #only build binary addons if something in the addons metadata changed
+ if [ "$(pathChanged $WORKSPACE/project/cmake)" == "1" ]
+ then
+ echo "building $addon"
+ git clean -xffd $WORKSPACE/$BINARY_ADDONS_ROOT/$addon
+ cd $WORKSPACE/$BINARY_ADDONS_ROOT/$addon;make -j $BUILDTHREADS || ALL_BINARY_ADDONS_BUILT="0"
+ fi
+done
+if [ "$ALL_BINARY_ADDONS_BUILT" == "1" ]
+then
+ tagSuccessFulBuild $WORKSPACE/project/cmake
+else
+ #make jenkins fail
+ exit 1
+fi
diff --git a/tools/buildsteps/linux32/make-depends b/tools/buildsteps/linux32/make-depends
index b7f1320260..d5371e837d 100755
--- a/tools/buildsteps/linux32/make-depends
+++ b/tools/buildsteps/linux32/make-depends
@@ -2,8 +2,8 @@ WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
XBMC_PLATFORM_DIR=linux32
. $WORKSPACE/tools/buildsteps/defaultenv
-if [ "$(rebuildDepends)" == "1" ]
+if [ "$(pathChanged $WORKSPACE/tools/depends)" == "1" ]
then
- cd $WORKSPACE/tools/depends;make -j $BUILDTHREADS && tagSuccessFulDependsBuild
+ cd $WORKSPACE/tools/depends;make -j $BUILDTHREADS || make && tagSuccessFulBuild $WORKSPACE/tools/depends
fi
diff --git a/tools/buildsteps/linux32/make-native-depends b/tools/buildsteps/linux32/make-native-depends
new file mode 100755
index 0000000000..1f21d53375
--- /dev/null
+++ b/tools/buildsteps/linux32/make-native-depends
@@ -0,0 +1,9 @@
+WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
+XBMC_PLATFORM_DIR=linux32
+. $WORKSPACE/tools/buildsteps/defaultenv
+
+if [ "$(pathChanged $WORKSPACE/tools/depends)" == "1" ]
+then
+ git clean -xffd $WORKSPACE/tools/depends/native
+ cd $WORKSPACE/tools/depends/native;make -j $BUILDTHREADS && tagSuccessFulBuild $WORKSPACE/tools/depends
+fi \ No newline at end of file
diff --git a/tools/buildsteps/linux32/make-xbmc b/tools/buildsteps/linux32/make-xbmc
index a2bc0a7afc..79f07e2dc4 100755
--- a/tools/buildsteps/linux32/make-xbmc
+++ b/tools/buildsteps/linux32/make-xbmc
@@ -2,4 +2,4 @@ WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
XBMC_PLATFORM_DIR=linux32
. $WORKSPACE/tools/buildsteps/defaultenv
-cd $WORKSPACE;make -j$BUILDTHREADS
+cd $WORKSPACE;make -j$BUILDTHREADS || make
diff --git a/tools/buildsteps/linux32/package b/tools/buildsteps/linux32/package
index 45dc4c34cf..b073061176 100755
--- a/tools/buildsteps/linux32/package
+++ b/tools/buildsteps/linux32/package
@@ -3,8 +3,3 @@ XBMC_PLATFORM_DIR=linux32
. $WORKSPACE/tools/buildsteps/defaultenv
#nothing for linux atm
-
-#rename for upload
-#e.x. xbmc-20130314-8c2fb31-Frodo-armeabi-v7a.apk
-UPLOAD_FILENAME="xbmc-$(getBuildRevDateStr)-armeabi-v7a.apk"
-#mv xbmcapp-armeabi-*.apk $UPLOAD_FILENAME
diff --git a/tools/buildsteps/linux32/prepare-depends b/tools/buildsteps/linux32/prepare-depends
index 13df413142..525d78b325 100755
--- a/tools/buildsteps/linux32/prepare-depends
+++ b/tools/buildsteps/linux32/prepare-depends
@@ -3,9 +3,11 @@ XBMC_PLATFORM_DIR=linux32
. $WORKSPACE/tools/buildsteps/defaultenv
#clean without depends for skipping depends build if possible
-cd $WORKSPACE;git clean -xfd -e "project/cmake/.last_success_revision" -e "tools/depends"
+#also skip binary addons (pvr, audioencoder) as long as they are deployed in tree
+cd $WORKSPACE;git clean -xfd -e "project/cmake/.last_success_revision" -e "tools/depends" ${DEPLOYED_BINARY_ADDONS}
-if [ "$(rebuildDepends)" == "1" ]
+# if depends path has changed - cleanout everything and do a full rebuild
+if [ "$(pathChanged $WORKSPACE/tools/depends)" == "1" ]
then
#clean up the rest too
cd $WORKSPACE;git clean -xffd
diff --git a/tools/buildsteps/linux32/prepare-xbmc b/tools/buildsteps/linux32/prepare-xbmc
index ca3a3d2774..0fbd21ee35 100755
--- a/tools/buildsteps/linux32/prepare-xbmc
+++ b/tools/buildsteps/linux32/prepare-xbmc
@@ -2,4 +2,5 @@ WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
XBMC_PLATFORM_DIR=linux32
. $WORKSPACE/tools/buildsteps/defaultenv
-#nothing on linux
+#build binary addons before building xbmc...
+. $WORKSPACE/tools/buildsteps/$XBMC_PLATFORM_DIR/make-binary-addons
diff --git a/tools/buildsteps/linux64/configure-depends b/tools/buildsteps/linux64/configure-depends
index 80e990b427..44edac1431 100755
--- a/tools/buildsteps/linux64/configure-depends
+++ b/tools/buildsteps/linux64/configure-depends
@@ -2,7 +2,7 @@ WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
XBMC_PLATFORM_DIR=linux64
. $WORKSPACE/tools/buildsteps/defaultenv
-if [ "$(rebuildDepends)" == "1" ]
+if [ "$(pathChanged $WORKSPACE/tools/depends)" == "1" ]
then
cd $WORKSPACE/tools/depends;./configure \
--with-toolchain=/usr --prefix=$XBMC_DEPENDS_ROOT --host=x86_64-linux-gnu --with-tarballs=$TARBALLS
diff --git a/tools/buildsteps/linux64/make-binary-addons b/tools/buildsteps/linux64/make-binary-addons
new file mode 100755
index 0000000000..7f1cc6d14e
--- /dev/null
+++ b/tools/buildsteps/linux64/make-binary-addons
@@ -0,0 +1,24 @@
+WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
+XBMC_PLATFORM_DIR=linux64
+. $WORKSPACE/tools/buildsteps/defaultenv
+
+. $WORKSPACE/tools/buildsteps/$XBMC_PLATFORM_DIR/make-native-depends
+
+for addon in $BINARY_ADDONS
+do
+ ALL_BINARY_ADDONS_BUILT="1"
+ #only build binary addons if something in the addons metadata changed
+ if [ "$(pathChanged $WORKSPACE/project/cmake)" == "1" ]
+ then
+ echo "building $addon"
+ git clean -xffd $WORKSPACE/$BINARY_ADDONS_ROOT/$addon
+ cd $WORKSPACE/$BINARY_ADDONS_ROOT/$addon;make -j $BUILDTHREADS || ALL_BINARY_ADDONS_BUILT="0"
+ fi
+done
+if [ "$ALL_BINARY_ADDONS_BUILT" == "1" ]
+then
+ tagSuccessFulBuild $WORKSPACE/project/cmake
+else
+ #make jenkins fail
+ exit 1
+fi
diff --git a/tools/buildsteps/linux64/make-depends b/tools/buildsteps/linux64/make-depends
index ef58af723f..1730a618c7 100755
--- a/tools/buildsteps/linux64/make-depends
+++ b/tools/buildsteps/linux64/make-depends
@@ -2,8 +2,8 @@ WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
XBMC_PLATFORM_DIR=linux64
. $WORKSPACE/tools/buildsteps/defaultenv
-if [ "$(rebuildDepends)" == "1" ]
+if [ "$(pathChanged $WORKSPACE/tools/depends)" == "1" ]
then
- cd $WORKSPACE/tools/depends;make -j $BUILDTHREADS || make && tagSuccessFulDependsBuild
+ cd $WORKSPACE/tools/depends;make -j $BUILDTHREADS || make && tagSuccessFulBuild $WORKSPACE/tools/depends
fi
diff --git a/tools/buildsteps/linux64/make-native-depends b/tools/buildsteps/linux64/make-native-depends
new file mode 100755
index 0000000000..c05850f7f3
--- /dev/null
+++ b/tools/buildsteps/linux64/make-native-depends
@@ -0,0 +1,9 @@
+WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
+XBMC_PLATFORM_DIR=linux64
+. $WORKSPACE/tools/buildsteps/defaultenv
+
+if [ "$(pathChanged $WORKSPACE/tools/depends)" == "1" ]
+then
+ git clean -xffd $WORKSPACE/tools/depends/native
+ cd $WORKSPACE/tools/depends/native;make -j $BUILDTHREADS && tagSuccessFulBuild $WORKSPACE/tools/depends
+fi \ No newline at end of file
diff --git a/tools/buildsteps/linux64/prepare-depends b/tools/buildsteps/linux64/prepare-depends
index 31fde7a0f5..ae0a027a06 100755
--- a/tools/buildsteps/linux64/prepare-depends
+++ b/tools/buildsteps/linux64/prepare-depends
@@ -3,9 +3,11 @@ XBMC_PLATFORM_DIR=linux64
. $WORKSPACE/tools/buildsteps/defaultenv
#clean without depends for skipping depends build if possible
-cd $WORKSPACE;git clean -xfd -e "project/cmake/.last_success_revision" -e "tools/depends"
+#also skip binary addons (pvr, audioencoder) as long as they are deployed in tree
+cd $WORKSPACE;git clean -xfd -e "project/cmake/.last_success_revision" -e "tools/depends" ${DEPLOYED_BINARY_ADDONS}
-if [ "$(rebuildDepends)" == "1" ]
+# if depends path has changed - cleanout everything and do a full rebuild
+if [ "$(pathChanged $WORKSPACE/tools/depends)" == "1" ]
then
#clean up the rest too
cd $WORKSPACE;git clean -xffd
diff --git a/tools/buildsteps/linux64/prepare-xbmc b/tools/buildsteps/linux64/prepare-xbmc
index f71fcf6fef..6d6db0fcb2 100755
--- a/tools/buildsteps/linux64/prepare-xbmc
+++ b/tools/buildsteps/linux64/prepare-xbmc
@@ -2,4 +2,5 @@ WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
XBMC_PLATFORM_DIR=linux64
. $WORKSPACE/tools/buildsteps/defaultenv
-#nothing on linux
+#build binary addons before building xbmc...
+. $WORKSPACE/tools/buildsteps/$XBMC_PLATFORM_DIR/make-binary-addons
diff --git a/tools/buildsteps/osx32/configure-depends b/tools/buildsteps/osx32/configure-depends
index b475a1db8a..3ccfc3553c 100755
--- a/tools/buildsteps/osx32/configure-depends
+++ b/tools/buildsteps/osx32/configure-depends
@@ -2,7 +2,7 @@ WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
XBMC_PLATFORM_DIR=osx32
. $WORKSPACE/tools/buildsteps/defaultenv
-if [ "$(rebuildDepends)" == "1" ]
+if [ "$(pathChanged $WORKSPACE/tools/depends)" == "1" ]
then
cd $WORKSPACE/tools/depends;./configure \
--with-tarballs=/Users/Shared/xbmc-depends/tarballs \
diff --git a/tools/buildsteps/osx32/make-binary-addons b/tools/buildsteps/osx32/make-binary-addons
new file mode 100755
index 0000000000..2db0850b57
--- /dev/null
+++ b/tools/buildsteps/osx32/make-binary-addons
@@ -0,0 +1,24 @@
+WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
+XBMC_PLATFORM_DIR=osx32
+. $WORKSPACE/tools/buildsteps/defaultenv
+
+. $WORKSPACE/tools/buildsteps/$XBMC_PLATFORM_DIR/make-native-depends
+
+for addon in $BINARY_ADDONS
+do
+ ALL_BINARY_ADDONS_BUILT="1"
+ #only build binary addons if something in the addons metadata changed
+ if [ "$(pathChanged $WORKSPACE/project/cmake)" == "1" ]
+ then
+ echo "building $addon"
+ git clean -xffd $WORKSPACE/$BINARY_ADDONS_ROOT/$addon
+ cd $WORKSPACE/$BINARY_ADDONS_ROOT/$addon;make -j $BUILDTHREADS || ALL_BINARY_ADDONS_BUILT="0"
+ fi
+done
+if [ "$ALL_BINARY_ADDONS_BUILT" == "1" ]
+then
+ tagSuccessFulBuild $WORKSPACE/project/cmake
+else
+ #make jenkins fail
+ exit 1
+fi
diff --git a/tools/buildsteps/osx32/make-depends b/tools/buildsteps/osx32/make-depends
index ecddc6dcde..ac149d74c3 100755
--- a/tools/buildsteps/osx32/make-depends
+++ b/tools/buildsteps/osx32/make-depends
@@ -2,8 +2,8 @@ WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
XBMC_PLATFORM_DIR=osx32
. $WORKSPACE/tools/buildsteps/defaultenv
-if [ "$(rebuildDepends)" == "1" ]
+if [ "$(pathChanged $WORKSPACE/tools/depends)" == "1" ]
then
- cd $WORKSPACE/tools/depends;make -j $BUILDTHREADS && tagSuccessFulDependsBuild
+ cd $WORKSPACE/tools/depends;make -j $BUILDTHREADS && tagSuccessFulBuild $WORKSPACE/tools/depends
fi
diff --git a/tools/buildsteps/osx32/make-native-depends b/tools/buildsteps/osx32/make-native-depends
new file mode 100755
index 0000000000..6bdbc6665e
--- /dev/null
+++ b/tools/buildsteps/osx32/make-native-depends
@@ -0,0 +1,9 @@
+WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
+XBMC_PLATFORM_DIR=osx32
+. $WORKSPACE/tools/buildsteps/defaultenv
+
+if [ "$(pathChanged $WORKSPACE/tools/depends)" == "1" ]
+then
+ git clean -xffd $WORKSPACE/tools/depends/native
+ cd $WORKSPACE/tools/depends/native;make -j $BUILDTHREADS && tagSuccessFulBuild $WORKSPACE/tools/depends
+fi \ No newline at end of file
diff --git a/tools/buildsteps/osx32/prepare-depends b/tools/buildsteps/osx32/prepare-depends
index 2e356226f0..3feb117e4a 100755
--- a/tools/buildsteps/osx32/prepare-depends
+++ b/tools/buildsteps/osx32/prepare-depends
@@ -4,9 +4,10 @@ XBMC_PLATFORM_DIR=osx32
#clean without depends for skipping depends build if possible
#also skip binary addons (pvr, audioencoder) as long as they are deployed in tree
-cd $WORKSPACE;git clean -xfd -e "project/cmake/.last_success_revision" -e "tools/depends" -e "addons/pvr.*" -e "addons/audioencoder.*"
+cd $WORKSPACE;git clean -xfd -e "project/cmake/.last_success_revision" -e "tools/depends" ${DEPLOYED_BINARY_ADDONS}
-if [ "$(rebuildDepends)" == "1" ]
+# if depends path has changed - cleanout everything and do a full rebuild
+if [ "$(pathChanged $WORKSPACE/tools/depends)" == "1" ]
then
#clean up the rest too
cd $WORKSPACE;git clean -xffd
diff --git a/tools/buildsteps/osx32/prepare-xbmc b/tools/buildsteps/osx32/prepare-xbmc
index 01f97dac74..59431ddb17 100755
--- a/tools/buildsteps/osx32/prepare-xbmc
+++ b/tools/buildsteps/osx32/prepare-xbmc
@@ -2,4 +2,5 @@ WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
XBMC_PLATFORM_DIR=osx32
. $WORKSPACE/tools/buildsteps/defaultenv
-#nothing on osx
+#build binary addons before building xbmc...
+. $WORKSPACE/tools/buildsteps/$XBMC_PLATFORM_DIR/make-binary-addons
diff --git a/tools/buildsteps/osx64/configure-depends b/tools/buildsteps/osx64/configure-depends
index 840643c33f..62f97700b3 100755
--- a/tools/buildsteps/osx64/configure-depends
+++ b/tools/buildsteps/osx64/configure-depends
@@ -2,7 +2,7 @@ WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
XBMC_PLATFORM_DIR=osx64
. $WORKSPACE/tools/buildsteps/defaultenv
-if [ "$(rebuildDepends)" == "1" ]
+if [ "$(pathChanged $WORKSPACE/tools/depends)" == "1" ]
then
cd $WORKSPACE/tools/depends;./configure \
--with-tarballs=/Users/Shared/xbmc-depends/tarballs \
diff --git a/tools/buildsteps/osx64/make-binary-addons b/tools/buildsteps/osx64/make-binary-addons
new file mode 100755
index 0000000000..c7fd4b7cf4
--- /dev/null
+++ b/tools/buildsteps/osx64/make-binary-addons
@@ -0,0 +1,24 @@
+WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
+XBMC_PLATFORM_DIR=osx64
+. $WORKSPACE/tools/buildsteps/defaultenv
+
+. $WORKSPACE/tools/buildsteps/$XBMC_PLATFORM_DIR/make-native-depends
+
+for addon in $BINARY_ADDONS
+do
+ ALL_BINARY_ADDONS_BUILT="1"
+ #only build binary addons if something in the addons metadata changed
+ if [ "$(pathChanged $WORKSPACE/project/cmake)" == "1" ]
+ then
+ echo "building $addon"
+ git clean -xffd $WORKSPACE/$BINARY_ADDONS_ROOT/$addon
+ cd $WORKSPACE/$BINARY_ADDONS_ROOT/$addon;make -j $BUILDTHREADS || ALL_BINARY_ADDONS_BUILT="0"
+ fi
+done
+if [ "$ALL_BINARY_ADDONS_BUILT" == "1" ]
+then
+ tagSuccessFulBuild $WORKSPACE/project/cmake
+else
+ #make jenkins fail
+ exit 1
+fi
diff --git a/tools/buildsteps/osx64/make-depends b/tools/buildsteps/osx64/make-depends
index 6749356afc..5a325e16e9 100755
--- a/tools/buildsteps/osx64/make-depends
+++ b/tools/buildsteps/osx64/make-depends
@@ -2,8 +2,8 @@ WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
XBMC_PLATFORM_DIR=osx64
. $WORKSPACE/tools/buildsteps/defaultenv
-if [ "$(rebuildDepends)" == "1" ]
+if [ "$(pathChanged $WORKSPACE/tools/depends)" == "1" ]
then
- cd $WORKSPACE/tools/depends;make -j $BUILDTHREADS && tagSuccessFulDependsBuild
+ cd $WORKSPACE/tools/depends;make -j $BUILDTHREADS && tagSuccessFulBuild $WORKSPACE/tools/depends
fi
diff --git a/tools/buildsteps/osx64/make-native-depends b/tools/buildsteps/osx64/make-native-depends
new file mode 100755
index 0000000000..d74c80ee26
--- /dev/null
+++ b/tools/buildsteps/osx64/make-native-depends
@@ -0,0 +1,9 @@
+WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
+XBMC_PLATFORM_DIR=osx64
+. $WORKSPACE/tools/buildsteps/defaultenv
+
+if [ "$(pathChanged $WORKSPACE/tools/depends)" == "1" ]
+then
+ git clean -xffd $WORKSPACE/tools/depends/native
+ cd $WORKSPACE/tools/depends/native;make -j $BUILDTHREADS && tagSuccessFulBuild $WORKSPACE/tools/depends
+fi \ No newline at end of file
diff --git a/tools/buildsteps/osx64/prepare-depends b/tools/buildsteps/osx64/prepare-depends
index 03b10ea823..60df95379d 100755
--- a/tools/buildsteps/osx64/prepare-depends
+++ b/tools/buildsteps/osx64/prepare-depends
@@ -4,9 +4,10 @@ XBMC_PLATFORM_DIR=osx64
#clean without depends for skipping depends build if possible
#also skip binary addons (pvr, audioencoder) as long as they are deployed in tree
-cd $WORKSPACE;git clean -xfd -e "project/cmake/.last_success_revision" -e "tools/depends" -e "addons/pvr.*" -e "addons/audioencoder.*"
+cd $WORKSPACE;git clean -xfd -e "project/cmake/.last_success_revision" -e "tools/depends" ${DEPLOYED_BINARY_ADDONS}
-if [ "$(rebuildDepends)" == "1" ]
+# if depends path has changed - cleanout everything and do a full rebuild
+if [ "$(pathChanged $WORKSPACE/tools/depends)" == "1" ]
then
#clean up the rest too
cd $WORKSPACE;git clean -xffd
diff --git a/tools/buildsteps/osx64/prepare-xbmc b/tools/buildsteps/osx64/prepare-xbmc
index 6eea638e97..2c30e4924c 100755
--- a/tools/buildsteps/osx64/prepare-xbmc
+++ b/tools/buildsteps/osx64/prepare-xbmc
@@ -2,4 +2,5 @@ WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
XBMC_PLATFORM_DIR=osx64
. $WORKSPACE/tools/buildsteps/defaultenv
-#nothing on osx
+#build binary addons before building xbmc...
+. $WORKSPACE/tools/buildsteps/$XBMC_PLATFORM_DIR/make-binary-addons
diff --git a/tools/buildsteps/rbpi/configure-depends b/tools/buildsteps/rbpi/configure-depends
index 96c75e1f9e..556469f359 100755
--- a/tools/buildsteps/rbpi/configure-depends
+++ b/tools/buildsteps/rbpi/configure-depends
@@ -2,7 +2,7 @@ WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
XBMC_PLATFORM_DIR=rbpi
. $WORKSPACE/tools/buildsteps/defaultenv
-if [ "$(rebuildDepends)" == "1" ]
+if [ "$(pathChanged $WORKSPACE/tools/depends)" == "1" ]
then
cd $WORKSPACE/tools/depends;
diff --git a/tools/buildsteps/rbpi/make-binary-addons b/tools/buildsteps/rbpi/make-binary-addons
new file mode 100755
index 0000000000..0e42bda5e4
--- /dev/null
+++ b/tools/buildsteps/rbpi/make-binary-addons
@@ -0,0 +1,24 @@
+WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
+XBMC_PLATFORM_DIR=rbpi
+. $WORKSPACE/tools/buildsteps/defaultenv
+
+. $WORKSPACE/tools/buildsteps/$XBMC_PLATFORM_DIR/make-native-depends
+
+for addon in $BINARY_ADDONS
+do
+ ALL_BINARY_ADDONS_BUILT="1"
+ #only build binary addons if something in the addons metadata changed
+ if [ "$(pathChanged $WORKSPACE/project/cmake)" == "1" ]
+ then
+ echo "building $addon"
+ git clean -xffd $WORKSPACE/$BINARY_ADDONS_ROOT/$addon
+ cd $WORKSPACE/$BINARY_ADDONS_ROOT/$addon;make -j $BUILDTHREADS || ALL_BINARY_ADDONS_BUILT="0"
+ fi
+done
+if [ "$ALL_BINARY_ADDONS_BUILT" == "1" ]
+then
+ tagSuccessFulBuild $WORKSPACE/project/cmake
+else
+ #make jenkins fail
+ exit 1
+fi
diff --git a/tools/buildsteps/rbpi/make-depends b/tools/buildsteps/rbpi/make-depends
index 4eb47575b7..ceeee09234 100755
--- a/tools/buildsteps/rbpi/make-depends
+++ b/tools/buildsteps/rbpi/make-depends
@@ -2,8 +2,8 @@ WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
XBMC_PLATFORM_DIR=rbpi
. $WORKSPACE/tools/buildsteps/defaultenv
-if [ "$(rebuildDepends)" == "1" ]
+if [ "$(pathChanged $WORKSPACE/tools/depends)" == "1" ]
then
- cd $WORKSPACE/tools/depends;make -j $BUILDTHREADS || make && tagSuccessFulDependsBuild
+ cd $WORKSPACE/tools/depends;make -j $BUILDTHREADS || make && tagSuccessFulBuild $WORKSPACE/tools/depends
fi
diff --git a/tools/buildsteps/rbpi/make-native-depends b/tools/buildsteps/rbpi/make-native-depends
new file mode 100755
index 0000000000..5f6d64c452
--- /dev/null
+++ b/tools/buildsteps/rbpi/make-native-depends
@@ -0,0 +1,9 @@
+WORKSPACE=${WORKSPACE:-$( cd $(dirname $0)/../../.. ; pwd -P )}
+XBMC_PLATFORM_DIR=rbpi
+. $WORKSPACE/tools/buildsteps/defaultenv
+
+if [ "$(pathChanged $WORKSPACE/tools/depends)" == "1" ]
+then
+ git clean -xffd $WORKSPACE/tools/depends/native
+ cd $WORKSPACE/tools/depends/native;make -j $BUILDTHREADS && tagSuccessFulBuild $WORKSPACE/tools/depends
+fi \ No newline at end of file
diff --git a/tools/buildsteps/rbpi/prepare-depends b/tools/buildsteps/rbpi/prepare-depends
index c084909dfa..8205432d65 100755
--- a/tools/buildsteps/rbpi/prepare-depends
+++ b/tools/buildsteps/rbpi/prepare-depends
@@ -3,7 +3,8 @@ XBMC_PLATFORM_DIR=rbpi
. $WORKSPACE/tools/buildsteps/defaultenv
#clean without depends for skipping depends build if possible
-cd $WORKSPACE;git clean -xfd -e "project/cmake/.last_success_revision" -e "tools/depends"
+#also skip binary addons (pvr, audioencoder) as long as they are deployed in tree
+cd $WORKSPACE;git clean -xfd -e "project/cmake/.last_success_revision" -e "tools/depends" ${DEPLOYED_BINARY_ADDONS}
if [ -d $JENKINS_RBPI_DEVENV/firmware ]
then
@@ -12,7 +13,10 @@ else
cd $JENKINS_RBPI_DEVENV;git clone git://github.com/raspberrypi/firmware.git --depth=1 -b master
fi
-if [ "$(rebuildDepends)" == "1" ]
+cd $WORKSPACE
+
+# if depends path has changed - cleanout everything and do a full rebuild
+if [ "$(pathChanged $WORKSPACE/tools/depends)" == "1" ]
then
#clean up the rest too
cd $WORKSPACE;git clean -xffd
diff --git a/tools/buildsteps/rbpi/prepare-xbmc b/tools/buildsteps/rbpi/prepare-xbmc
index c47ee7dd9d..468c7ed5cb 100755
--- a/tools/buildsteps/rbpi/prepare-xbmc
+++ b/tools/buildsteps/rbpi/prepare-xbmc
@@ -4,3 +4,6 @@ XBMC_PLATFORM_DIR=rbpi
cd $WORKSPACE
JSON_BUILDER=$XBMC_DEPENDS_ROOT/i686-linux-gnu-native/bin/JsonSchemaBuilder ./bootstrap
+
+#build binary addons before building xbmc...
+. $WORKSPACE/tools/buildsteps/$XBMC_PLATFORM_DIR/make-binary-addons