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,36 +1,122 @@
|
|||
#!/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
|
||||
|
||||
BRANCH=${1:-master}
|
||||
WEB_UI_BRANCH=${2:-master}
|
||||
function HELP {
|
||||
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
|
||||
}
|
||||
|
||||
CLONE=false
|
||||
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)"
|
||||
mkdir "$BUILD_DIR"
|
||||
else
|
||||
BUILD_DIR="../lbry-build-$(date +%Y%m%d-%H%M%S)"
|
||||
fi
|
||||
fi
|
||||
|
||||
mkdir -p "$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
|
||||
sudo add-apt-repository -y ppa:spotify-jyrki/dh-virtualenv
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y build-essential git python-dev libffi-dev libssl-dev libgmp3-dev dh-virtualenv debhelper
|
||||
$SUDO apt-get ${QUIET} update
|
||||
$SUDO apt-get ${QUIET} install -y --no-install-recommends software-properties-common
|
||||
$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)
|
||||
wget https://bootstrap.pypa.io/get-pip.py
|
||||
sudo python get-pip.py
|
||||
rm get-pip.py
|
||||
sudo pip install make-deb
|
||||
|
||||
# check out LBRY
|
||||
git clone https://github.com/lbryio/lbry.git --branch "$BRANCH"
|
||||
$SUDO pip install --upgrade pip
|
||||
$SUDO pip install make-deb
|
||||
|
||||
# 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
|
||||
if [ -n "${BRANCH}" ]; then
|
||||
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')"
|
||||
ar vx "$PACKAGE"
|
||||
mkdir control data
|
||||
tar -xvzf control.tar.gz --directory control
|
||||
tar -xvJf data.tar.xz --directory data
|
||||
tar -xzf control.tar.gz --directory control
|
||||
|
||||
# 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'
|
||||
|
||||
|
@ -60,13 +153,12 @@ function addfile() {
|
|||
}
|
||||
addfile "$PACKAGING_DIR/lbry" usr/share/python/lbrynet/bin/lbry
|
||||
addfile "$PACKAGING_DIR/lbry.desktop" usr/share/applications/lbry.desktop
|
||||
#addfile lbry/packaging/ubuntu/lbry-init.conf etc/init/lbry.conf
|
||||
|
||||
# repackage .deb
|
||||
sudo chown -R root:root control data
|
||||
tar -cvzf control.tar.gz -C control .
|
||||
tar -cvJf data.tar.xz -C data .
|
||||
sudo chown root:root debian-binary control.tar.gz data.tar.xz
|
||||
$SUDO chown -R root:root control data
|
||||
tar -czf control.tar.gz -C control .
|
||||
tar -cJf data.tar.xz -C data .
|
||||
$SUDO chown root:root 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
|
||||
|
|
Loading…
Reference in a new issue