forked from LBRYCommunity/lbry-sdk
Enabling builds on travis-ci
- adds a travis.yml config file - modifies the ubuntu build script to work on travis - adds start of osx builds - waiting for certs to be added
This commit is contained in:
parent
098b5b28a8
commit
efb5157027
5 changed files with 182 additions and 29 deletions
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
[submodule "packaging/osx/lbry-osx-app"]
|
||||||
|
path = packaging/osx/lbry-osx-app
|
||||||
|
url = https://github.com/jobevers/lbry-osx-app.git
|
32
.travis.yml
Normal file
32
.travis.yml
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- os: linux
|
||||||
|
sudo: required
|
||||||
|
dist: trust
|
||||||
|
# dh-virtualenv requires that we use the same python interpreter
|
||||||
|
# that comes with the system, so we don't want to use anything that
|
||||||
|
# travis would try to set-up for us in python
|
||||||
|
language: generic
|
||||||
|
|
||||||
|
before_install:
|
||||||
|
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update; brew install python; fi
|
||||||
|
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then sudo pip install --upgrade pip virtualenv; fi
|
||||||
|
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then virtualenv $HOME/venv; source $HOME/venv/bin/activate; fi
|
||||||
|
|
||||||
|
install: true
|
||||||
|
|
||||||
|
before_script:
|
||||||
|
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then openssl aes-256-cbc -k "$ENCRYPTION_SECRET" -in packaging/osx/certs/dist.cer.enc -d -a -out packaging/osx/certs/dist.cer; fi
|
||||||
|
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then openssl aes-256-cbc -k "$ENCRYPTION_SECRET" -in packaging/osx/certs/dist.p12.enc -d -a -out packaging/osx/certs/dist.p12; fi
|
||||||
|
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then ./packaging/osx/add-key.sh; fi
|
||||||
|
|
||||||
|
script:
|
||||||
|
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then bash packaging/ubuntu/ubuntu_package_setup.sh; fi
|
||||||
|
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew upgrade gmp; fi
|
||||||
|
# the default py2app (v0.9) has a bug that is fixed in the head of /metachris/py2app
|
||||||
|
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then pip install git+https://github.com/metachris/py2app; fi
|
||||||
|
# py2app fails to find jsonrpc unless json-rpc is installed. why? I don't know.
|
||||||
|
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then pip install json-rpc; fi
|
||||||
|
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then cd packaging/osx/lbry-osx-app; ./setup_app.sh; cd $TRAVIS_BUILD_DIR; fi
|
||||||
|
|
25
packaging/osx/add-key.sh
Executable file
25
packaging/osx/add-key.sh
Executable file
|
@ -0,0 +1,25 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# http://stackoverflow.com/a/246128
|
||||||
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
|
# adapted from https://www.objc.io/issues/6-build-tools/travis-ci/#add-scripts
|
||||||
|
|
||||||
|
KEYCHAIN_PASSWORD=travis
|
||||||
|
|
||||||
|
# Create a custom keychain
|
||||||
|
security create-keychain -p ${KEYCHAIN_PASSWORD} osx-build.keychain
|
||||||
|
|
||||||
|
# Make the custom keychain default, so xcodebuild will use it for signing
|
||||||
|
security default-keychain -s osx-build.keychain
|
||||||
|
|
||||||
|
# Unlock the keychain
|
||||||
|
security unlock-keychain -p ${KEYCHAIN_PASSWORD} osx-build.keychain
|
||||||
|
|
||||||
|
# Set keychain timeout to 1 hour for long builds
|
||||||
|
# see http://www.egeek.me/2013/02/23/jenkins-and-xcode-user-interaction-is-not-allowed/
|
||||||
|
security set-keychain-settings -t 3600 -l ~/Library/Keychains/osx-build.keychain
|
||||||
|
|
||||||
|
# Add certificates to keychain and allow codesign to access them
|
||||||
|
security import ${DIR}/certs/dist.cer -k ~/Library/Keychains/osx-build.keychain -T /usr/bin/codesign
|
||||||
|
security import ${DIR}/certs/dist.p12 -k ~/Library/Keychains/osx-build.keychain -P $KEY_PASSWORD -T /usr/bin/codesign
|
||||||
|
|
1
packaging/osx/lbry-osx-app
Submodule
1
packaging/osx/lbry-osx-app
Submodule
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit e5b465205469e8f14999b56138b3bea6666e006d
|
|
@ -1,38 +1,124 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Tested on fresh Ubuntu 14.04 install.
|
|
||||||
|
|
||||||
# wget https://raw.githubusercontent.com/lbryio/lbry/master/packaging/ubuntu/ubuntu_package_setup.sh
|
|
||||||
# bash ubuntu_package_setup.sh [BRANCH] [WEB-UI-BRANCH]
|
|
||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
BRANCH=${1:-master}
|
function HELP {
|
||||||
WEB_UI_BRANCH=${2:-master}
|
echo "Build a debian package for lbry"
|
||||||
|
echo "-----"
|
||||||
|
echo "When run without any arguments, this script expects the current directory"
|
||||||
|
echo "to be the main lbry repo and it builds what is in that directory"
|
||||||
|
echo
|
||||||
|
echo "Optional arguments:"
|
||||||
|
echo
|
||||||
|
echo "-c: clone a fresh copy of the repo"
|
||||||
|
echo "-b <branch>: use the specified branch of the lbry repo"
|
||||||
|
echo "-w <web-ui-branch>: set the webui branch"
|
||||||
|
echo "-d <build-dir>: specifiy the build directory"
|
||||||
|
echo "-h: show help"
|
||||||
|
echo "-t: turn trace on"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
BUILD_DIR="lbry-build-$(date +%Y%m%d-%H%M%S)"
|
CLONE=false
|
||||||
mkdir "$BUILD_DIR"
|
BUILD_DIR=""
|
||||||
|
BRANCH=""
|
||||||
|
WEB_UI_BRANCH="master"
|
||||||
|
|
||||||
|
while getopts :hctb:w:d: FLAG; do
|
||||||
|
case $FLAG in
|
||||||
|
c)
|
||||||
|
CLONE=true
|
||||||
|
;;
|
||||||
|
b)
|
||||||
|
BRANCH=${OPTARG}
|
||||||
|
;;
|
||||||
|
w)
|
||||||
|
WEB_UI_BRANCH=${OPTARG}
|
||||||
|
;;
|
||||||
|
d)
|
||||||
|
BUILD_DIR=${OPTARG}
|
||||||
|
;;
|
||||||
|
t)
|
||||||
|
set -o xtrace
|
||||||
|
;;
|
||||||
|
h)
|
||||||
|
HELP
|
||||||
|
;;
|
||||||
|
\?) #unrecognized option - show help
|
||||||
|
echo "Option -$OPTARG not allowed."
|
||||||
|
HELP
|
||||||
|
;;
|
||||||
|
:)
|
||||||
|
echo "Option -$OPTARG requires an argument."
|
||||||
|
HELP
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
shift $((OPTIND-1))
|
||||||
|
|
||||||
|
|
||||||
|
SUDO=''
|
||||||
|
if (( $EUID != 0 )); then
|
||||||
|
SUDO='sudo'
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$CLONE" = false ]; then
|
||||||
|
if [ `basename $PWD` != "lbry" ]; then
|
||||||
|
echo "Not currently in the lbry directory. Cowardly refusing to go forward"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
SOURCE_DIR=$PWD
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "${BUILD_DIR}" ]; then
|
||||||
|
if [ "$CLONE" = true ]; then
|
||||||
|
# build in the current directory
|
||||||
|
BUILD_DIR="lbry-build-$(date +%Y%m%d-%H%M%S)"
|
||||||
|
else
|
||||||
|
BUILD_DIR="../lbry-build-$(date +%Y%m%d-%H%M%S)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p "$BUILD_DIR"
|
||||||
cd "$BUILD_DIR"
|
cd "$BUILD_DIR"
|
||||||
|
|
||||||
|
if [ -z ${TRAVIS+x} ]; then
|
||||||
|
# if not on travis, its nice to see progress
|
||||||
|
QUIET=""
|
||||||
|
else
|
||||||
|
QUIET="-qq"
|
||||||
|
fi
|
||||||
|
|
||||||
# get the required OS packages
|
# get the required OS packages
|
||||||
sudo add-apt-repository -y ppa:spotify-jyrki/dh-virtualenv
|
$SUDO apt-get ${QUIET} update
|
||||||
sudo apt-get update
|
$SUDO apt-get ${QUIET} install -y --no-install-recommends software-properties-common
|
||||||
sudo apt-get install -y build-essential git python-dev libffi-dev libssl-dev libgmp3-dev dh-virtualenv debhelper
|
$SUDO add-apt-repository -y ppa:spotify-jyrki/dh-virtualenv
|
||||||
|
$SUDO apt-get ${QUIET} update
|
||||||
|
$SUDO apt-get ${QUIET} install -y --no-install-recommends \
|
||||||
|
build-essential git python-dev libffi-dev libssl-dev \
|
||||||
|
libgmp3-dev dh-virtualenv debhelper wget python-pip
|
||||||
|
|
||||||
# need a modern version of pip (more modern than ubuntu default)
|
# need a modern version of pip (more modern than ubuntu default)
|
||||||
wget https://bootstrap.pypa.io/get-pip.py
|
$SUDO pip install --upgrade pip
|
||||||
sudo python get-pip.py
|
$SUDO pip install make-deb
|
||||||
rm get-pip.py
|
|
||||||
sudo pip install make-deb
|
|
||||||
|
|
||||||
# check out LBRY
|
|
||||||
git clone https://github.com/lbryio/lbry.git --branch "$BRANCH"
|
|
||||||
|
|
||||||
# build packages
|
# build packages
|
||||||
|
#
|
||||||
|
# dpkg-buildpackage outputs its results into '..' so
|
||||||
|
# we need to move/clone lbry into the build directory
|
||||||
|
if [ "$CLONE" == true]; then
|
||||||
|
cp -a $SOURCE_DIR lbry
|
||||||
|
else
|
||||||
|
git clone https://github.com/lbryio/lbry.git
|
||||||
|
fi
|
||||||
(
|
(
|
||||||
cd lbry
|
cd lbry
|
||||||
make-deb
|
if [ -n "${BRANCH}" ]; then
|
||||||
dpkg-buildpackage -us -uc
|
git checkout "${BRANCH}"
|
||||||
|
fi
|
||||||
|
make-deb
|
||||||
|
dpkg-buildpackage -us -uc
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -42,8 +128,15 @@ git clone https://github.com/lbryio/lbry.git --branch "$BRANCH"
|
||||||
PACKAGE="$(ls | grep '.deb')"
|
PACKAGE="$(ls | grep '.deb')"
|
||||||
ar vx "$PACKAGE"
|
ar vx "$PACKAGE"
|
||||||
mkdir control data
|
mkdir control data
|
||||||
tar -xvzf control.tar.gz --directory control
|
tar -xzf control.tar.gz --directory control
|
||||||
tar -xvJf data.tar.xz --directory data
|
|
||||||
|
# The output of the travis build is a
|
||||||
|
# tar.gz and the output locally is tar.xz.
|
||||||
|
# Instead of having tar detect the compression used, we
|
||||||
|
# could update the config to output the same in either spot.
|
||||||
|
# Unfortunately, doing so requires editting some auto-generated
|
||||||
|
# files: http://linux.spiney.org/forcing_gzip_compression_when_building_debian_packages
|
||||||
|
tar -xf data.tar.?z --directory data
|
||||||
|
|
||||||
PACKAGING_DIR='lbry/packaging/ubuntu'
|
PACKAGING_DIR='lbry/packaging/ubuntu'
|
||||||
|
|
||||||
|
@ -60,13 +153,12 @@ function addfile() {
|
||||||
}
|
}
|
||||||
addfile "$PACKAGING_DIR/lbry" usr/share/python/lbrynet/bin/lbry
|
addfile "$PACKAGING_DIR/lbry" usr/share/python/lbrynet/bin/lbry
|
||||||
addfile "$PACKAGING_DIR/lbry.desktop" usr/share/applications/lbry.desktop
|
addfile "$PACKAGING_DIR/lbry.desktop" usr/share/applications/lbry.desktop
|
||||||
#addfile lbry/packaging/ubuntu/lbry-init.conf etc/init/lbry.conf
|
|
||||||
|
|
||||||
# repackage .deb
|
# repackage .deb
|
||||||
sudo chown -R root:root control data
|
$SUDO chown -R root:root control data
|
||||||
tar -cvzf control.tar.gz -C control .
|
tar -czf control.tar.gz -C control .
|
||||||
tar -cvJf data.tar.xz -C data .
|
tar -cJf data.tar.xz -C data .
|
||||||
sudo chown root:root debian-binary control.tar.gz data.tar.xz
|
$SUDO chown root:root debian-binary control.tar.gz data.tar.xz
|
||||||
ar r "$PACKAGE" debian-binary control.tar.gz data.tar.xz
|
ar r "$PACKAGE" debian-binary control.tar.gz data.tar.xz
|
||||||
|
|
||||||
# TODO: we can append to data.tar instead of extracting it all and recompressing
|
# TODO: we can append to data.tar instead of extracting it all and recompressing
|
||||||
|
|
Loading…
Reference in a new issue