diff --git a/.travis.yml b/.travis.yml index e114fe29..26767d3b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,31 +1,53 @@ language: rust sudo: required -dist: trusty rust: - nightly os: - linux -addons: - apt: - packages: - - libpulse-dev - - pulseaudio - - pulseaudio-utils - - dbus-x11 -services: - - pulseaudio +dist: trusty + +matrix: + include: + - name: "Desktop build" + addons: + apt: + packages: + - libpulse-dev + - pulseaudio + - pulseaudio-utils + - dbus-x11 + services: + - pulseaudio + + before_install: + - curl -L http://servo-deps.s3.amazonaws.com/gstreamer/gstreamer-x86_64-linux-gnu.tar.gz | tar xz + - sed -i "s;prefix=/root/gstreamer;prefix=$PWD/gstreamer;g" $PWD/gstreamer/lib/x86_64-linux-gnu/pkgconfig/*.pc + - export PKG_CONFIG_PATH=$PWD/gstreamer/lib/x86_64-linux-gnu/pkgconfig + - export GST_PLUGIN_SYSTEM_PATH=$GST_PLUGIN_SYSTEM_PATH:/usr/lib/x86_64-linux-gnu/gstreamer-1.0:$PWD/gstreamer/lib/x86_64-linux-gnu/gstreamer-1.0 + - export GST_PLUGIN_SCANNER=$PWD/gstreamer/libexec/gstreamer-1.0/gst-plugin-scanner + - export PATH=$PATH:$PWD/gstreamer/bin + - export LD_LIBRARY_PATH=$PWD/gstreamer/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH + - export DISPLAY=:99.0; + - /sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -screen 0 1400x900x24 -ac +extension GLX +render -noreset; + + script: + - cargo build + - ls examples/*.rs | xargs -I{} basename {} .rs | grep -v params_connect | RUST_BACKTRACE=1 GST_DEBUG=3 xargs -I{} cargo ex {} -before_install: - - curl -L http://servo-deps.s3.amazonaws.com/gstreamer/gstreamer-x86_64-linux-gnu.tar.gz | tar xz - - sed -i "s;prefix=/root/gstreamer;prefix=$PWD/gstreamer;g" $PWD/gstreamer/lib/x86_64-linux-gnu/pkgconfig/*.pc - - export PKG_CONFIG_PATH=$PWD/gstreamer/lib/x86_64-linux-gnu/pkgconfig - - export GST_PLUGIN_SYSTEM_PATH=$GST_PLUGIN_SYSTEM_PATH:/usr/lib/x86_64-linux-gnu/gstreamer-1.0:$PWD/gstreamer/lib/x86_64-linux-gnu/gstreamer-1.0 - - export GST_PLUGIN_SCANNER=$PWD/gstreamer/libexec/gstreamer-1.0/gst-plugin-scanner - - export PATH=$PATH:$PWD/gstreamer/bin - - export LD_LIBRARY_PATH=$PWD/gstreamer/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH - - export DISPLAY=:99.0; - - /sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -screen 0 1400x900x24 -ac +extension GLX +render -noreset; + - name: "Android build" + before_install: + - curl -sSf https://build.travis-ci.org/files/rustup-init.sh | sh -s -- --default-toolchain=nightly -y + - source $HOME/.cargo/env + - rustup target add arm-linux-androideabi + - wget https://dl.google.com/android/repository/android-ndk-r16b-linux-x86_64.zip -O ndk.zip + - unzip ndk.zip > /dev/null + - export NDK_HOME=`pwd`/android-ndk-r16b + - ${NDK_HOME}/build/tools/make_standalone_toolchain.py --arch arm --api 21 --install-dir android-21-armv7-toolchain + - echo "[target.arm-linux-androideabi]" >> examples/android/lib/.cargo/config + - echo "linker = \"`pwd`/android-21-armv7-toolchain/bin/arm-linux-androideabi-gcc\"" >> examples/android/lib/.cargo/config + - echo "ar = \"`pwd`/android-21-armv7-toolchain/bin/arm-linux-androideabi-ar\"" >> examples/android/lib/.cargo/config + - cat examples/android/lib/.cargo/config -script: - - cargo build - - ls examples/*.rs | xargs -I{} basename {} .rs | grep -v params_connect | RUST_BACKTRACE=1 GST_DEBUG=3 xargs -I{} cargo ex {} + script: + - cd examples/android + - source build.sh diff --git a/README.md b/README.md index 067fe14f..65e19c7b 100644 --- a/README.md +++ b/README.md @@ -95,5 +95,6 @@ Make sure that you have [adb](https://developer.android.com/studio/command-line/ installed and you have adb access to your Android device. Go to the `examples/android` folder and run: ```ssh -source run.sh +source build.sh +./run.sh ``` diff --git a/etc/android_bootstrap.sh b/etc/android_bootstrap.sh index 0291fae3..4cbdff72 100755 --- a/etc/android_bootstrap.sh +++ b/etc/android_bootstrap.sh @@ -22,7 +22,7 @@ if [ ! -d $GST_DIR_TARGET ]; then GST_ZIP="../gstreamer-${TARGET}.zip" # Download the bundle containing all dependencies for Android. wget http://servo-deps.s3.amazonaws.com/gstreamer/gstreamer-$TARGET-1.14.3-20181004-142930.zip -O $GST_ZIP - unzip $GST_ZIP -d $GST_DIR_TARGET + unzip $GST_ZIP -d $GST_DIR_TARGET > /dev/null rm $GST_ZIP fi diff --git a/examples/android/build.sh b/examples/android/build.sh new file mode 100755 index 00000000..e64f1900 --- /dev/null +++ b/examples/android/build.sh @@ -0,0 +1,15 @@ +ROOT=${PWD} +PKG_CONFIG_PATH_OLD=$PKG_CONFIG_PATH +cd ../../etc +./android_bootstrap.sh armeabi-v7a +cd .. +export PKG_CONFIG_PATH=${PWD}/gstreamer/armeabi-v7a/gst-build-armeabi-v7a/pkgconfig +echo "Set PKG_CONFIG_PATH to ${PKG_CONFIG_PATH}" +cd servo-media +echo "Building servo-media ${PWD}" +PKG_CONFIG_ALLOW_CROSS=1 cargo build --target=arm-linux-androideabi || return 1 +cd ${ROOT}/lib +echo "Building servo-media-android ${PWD}" +PKG_CONFIG_ALLOW_CROSS=1 cargo build --target=arm-linux-androideabi || return 1 +echo "Set PKG_CONFIG_PATH to previous state ${PKG_CONFIG_PATH_OLD}" +export PKG_CONFIG_PATH=$PKG_CONFIG_PATH_OLD diff --git a/examples/android/run.sh b/examples/android/run.sh index 668e868c..bf05a2ba 100755 --- a/examples/android/run.sh +++ b/examples/android/run.sh @@ -1,19 +1,5 @@ ROOT=${PWD} -PKG_CONFIG_PATH_OLD=$PKG_CONFIG_PATH -cd ../../etc -./android_bootstrap.sh armeabi-v7a -cd .. -export PKG_CONFIG_PATH=${PWD}/gstreamer/armeabi-v7a/gst-build-armeabi-v7a/pkgconfig -echo "Set PKG_CONFIG_PATH to ${PKG_CONFIG_PATH}" -cd servo-media -echo "Building servo-media ${PWD}" -PKG_CONFIG_ALLOW_CROSS=1 cargo build --target=arm-linux-androideabi || return 1 -cd ${ROOT}/lib -echo "Building servo-media-android ${PWD}" -PKG_CONFIG_ALLOW_CROSS=1 cargo build || return 1 -echo "Set PKG_CONFIG_PATH to previous state ${PKG_CONFIG_PATH_OLD}" -export PKG_CONFIG_PATH=$PKG_CONFIG_PATH_OLD -cd ../src/app/src/main/ +cd src/app/src/main/ rm -rf jniLibs mkdir -p jniLibs/armeabi