Skip to content

Commit

Permalink
Ubuntu build
Browse files Browse the repository at this point in the history
  • Loading branch information
drew2a committed May 26, 2022
1 parent d2a3890 commit 71b43ef
Show file tree
Hide file tree
Showing 7 changed files with 166 additions and 73 deletions.
12 changes: 12 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
name: Binaries

on:
pull_request:

jobs:
ubuntu:
if: github.event.pull_request.draft == false
uses: ./.github/workflows/build_ubuntu.yml
with:
upload: false
os: ubuntu-20.04
57 changes: 57 additions & 0 deletions .github/workflows/build_ubuntu.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: Ubuntu

on:
workflow_call:
inputs:
upload:
default: false
type: boolean
required: true
os:
default: ubuntu-latest
type: string
required: true

jobs:
build:
runs-on: ${{inputs.os}}
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
ref: ${{github.event.pull_request.head.sha}}

- uses: actions/setup-python@v3
with:
python-version: 3.8

- name: Save Git info
run: |
git describe | python -c 'import sys; print(next(sys.stdin).lstrip("v"))' > .TriblerVersion
git rev-parse HEAD > .TriblerCommit
echo "TRIBLER_VERSION=$(head -n 1 .TriblerVersion)" >> $GITHUB_ENV
- name: Install Ubuntu dependencies
run: |
sudo apt-get update
sudo apt-get -y install debhelper devscripts
# for qt:
sudo apt-get -y install libxcb-xinerama0-dev libqt5x11extras5
- name: Run build script
timeout-minutes: 10
env:
SENTRY_URL: ${{secrets.SENTRY_URL}}
QT_QPA_PLATFORM: offscreen
QT_ACCESSIBILITY: 1
QT_IM_MODULE: ibus
run: |
./build/debian/makedist_debian.sh
- name: Upload Artifact
if: inputs.upload
uses: actions/upload-artifact@v3
with:
name: tribler.deb
path: ./build/debian/tribler_${{env.TRIBLER_VERSION}}_all.deb
retention-days: 1
26 changes: 13 additions & 13 deletions build/debian/makedist_debian.sh
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
#!/bin/bash
# Script to build Tribler Debian package.
# Note: Run the script from root directory, eg.
# ./build/debian/makedist_debian.sh
#!/usr/bin/env bash
set -x # print all commands
set -e # exit when any command fails

if [[ ! -d build/debian ]]
then
if [[ ! -d build/debian ]]; then
echo "Please run this script from project root as:\n./build/debian/makedist_debian.sh"
fi

Expand All @@ -26,19 +24,21 @@ python3 -m pip install --upgrade pip
python3 -m pip install --upgrade -r requirements-build.txt

# ----- Update version
python3 build/update_version_from_git.py
python3 ./build/update_version.py -r .
python3 ./build/debian/update_metainfo.py -r .

# ----- Build
# ----- Build binaries
python3 -m PyInstaller tribler.spec --log-level=DEBUG

cp -r dist/tribler build/debian/tribler/usr/share/tribler
# ----- Build dpkg
cp -r ./dist/tribler ./build/debian/tribler/usr/share/tribler

TRIBLER_VERSION=$(cat .TriblerVersion)
TRIBLER_VERSION=$(head -n 1 .TriblerVersion) # read the first line only

pushd build/debian/tribler || exit
# Compose the changelog
cd ./build/debian/tribler

dch -v $TRIBLER_VERSION "New release"
dch -v $TRIBLER_VERSION "See https://github.com/Tribler/tribler/releases/tag/$TRIBLER_VERSION for more info"
# Build the package afterwards

dpkg-buildpackage -b -rfakeroot -us -uc
popd || exit
37 changes: 37 additions & 0 deletions build/debian/update_metainfo.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import logging
import time
import xml.etree.ElementTree as xml
from argparse import ArgumentParser
from pathlib import Path

import defusedxml.ElementTree as defxml

logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)


def parse_arguments():
parser = ArgumentParser(description='Update Tribler metainfo.xml')
parser.add_argument('-r', '--repo', type=str, help='path to a repository folder', default='.')
return parser.parse_args()


if __name__ == '__main__':
arguments = parse_arguments()

version = Path('.TriblerVersion').read_text().lstrip('v').rstrip('\n')

release_info = {
'version': version,
'date': time.strftime("%Y-%m-%d", time.localtime())
}

logger.info(f'Release info: {release_info}')
metainfo_xml = Path(arguments.repo) / 'build/debian/tribler/usr/share/metainfo/org.tribler.Tribler.metainfo.xml'

xml_dom = defxml.parse(metainfo_xml)
releases = xml_dom.getroot().find('releases')
release = xml.SubElement(releases, 'release', release_info)

xml_dom.write(metainfo_xml, encoding='utf-8', xml_declaration=True)
logger.info(f'Content of metainfo.xml: {metainfo_xml.read_text()}')
46 changes: 46 additions & 0 deletions build/update_version.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import logging
import os
from argparse import ArgumentParser
from pathlib import Path
from time import ctime

logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)


def parse_arguments():
parser = ArgumentParser(description='Update Tribler Version')
parser.add_argument('-r', '--repo', type=str, help='path to a repository folder', default='.')
return parser.parse_args()


if __name__ == '__main__':
arguments = parse_arguments()
logger.info(f'Arguments: {arguments}')

ref_name = Path('.TriblerVersion').read_text().rstrip('\n')
logger.info(f'Tribler tag: {ref_name}')

commit = Path('.TriblerCommit').read_text().rstrip('\n')
logger.info(f'Git Commit: {commit}')

build_time = ctime()
logger.info(f'Build time: {build_time}')

sentry_url = os.environ.get('SENTRY_URL', None)
logger.info(f'Sentry URL (hash): {hash(sentry_url)}')
if sentry_url is None:
logger.critical('Sentry url is not defined. To define sentry url use:'
'EXPORT SENTRY_URL=<sentry_url>\n'
'If you want to disable sentry, then define the following:'
'EXPORT SENTRY_URL=')
exit(1)

version_py = Path(arguments.repo) / 'src/tribler/core/version.py'
logger.info(f'Write info to: {version_py}')
version_py.write_text(
f'version_id = "{ref_name}"\n'
f'build_date = "{build_time}"\n'
f'commit_id = "{commit}"\n'
f'sentry_url = "{sentry_url}"\n'
)
2 changes: 1 addition & 1 deletion requirements-build.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
-r requirements.txt

PyInstaller==5.0.1
PyInstaller==5.1
defusedxml==0.7.1; sys_platform == 'linux2' or sys_platform == 'linux'
markupsafe==2.0.1; sys_platform == 'linux2' or sys_platform == 'linux'
requests==2.25.1
59 changes: 0 additions & 59 deletions src/tribler/core/update_version_from_git.py

This file was deleted.

0 comments on commit 71b43ef

Please sign in to comment.