Skip to content
This repository has been archived by the owner on Aug 19, 2024. It is now read-only.

Updated builders to use GitHub Actions #107

Merged
merged 1 commit into from
Aug 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
92 changes: 92 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
name: Build
on: workflow_dispatch
jobs:
build:
strategy:
matrix:
os: [macos-12, ubuntu-latest, windows-latest]

runs-on: ${{ matrix.os }}

steps:
- name: Check out SimpleFC repository (Windows)
if: matrix.os == 'windows-latest'
uses: actions/checkout@v4
with:
repository: mazinsw/SimpleFC
- name: Build SimpleFC NSIS Plugin (Windows)
if: matrix.os == 'windows-latest'
run: |
copy "bin\x86-unicode\SimpleFC.dll" "C:\Program Files (x86)\NSIS\Plugins\x86-unicode\SimpleFC.dll"
- name: Check out nsProcess repository (Windows)
if: matrix.os == 'windows-latest'
uses: actions/checkout@v4
with:
repository: simdsoft/nsProcess
submodules: 'true'
- name: Add msbuild to PATH (Windows)
if: matrix.os == 'windows-latest'
uses: microsoft/setup-msbuild@v2
- name: Build nsProcess NSIS Plugin (Windows)
if: matrix.os == 'windows-latest'
run: |
cd nsProcess
msbuild nsProcess.vcxproj /p:PlatformToolset=v143 /p:Configuration="Release UNICODE"
copy "Release UNICODE\nsProcess.dll" "C:\Program Files (x86)\NSIS\Plugins\x86-unicode\nsProcess.dll"
cd ../Include
copy nsProcess.nsh "C:\Program Files (x86)\NSIS\Include\nsProcess.nsh"
- name: Check-out repository
uses: actions/checkout@v4
with:
submodules: 'true'
fetch-tags: 'true'
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.10'
cache: 'pip'
cache-dependency-path: |
**/requirements-build.txt
- name: Install Dependencies
run: |
pip install --upgrade -r requirements-build.txt
- name: Setup npm
uses: actions/setup-node@v4
- name: Build npm
run: |
cd src/tribler/ui/
npm install
npm run build
- name: Determine tag
shell: bash
run: |
git fetch --tags
git for-each-ref --count=1 --sort=-creatordate --format '%(refname)' refs/tags > raw_tag.txt
echo "GITHUB_TAG=$(git name-rev --tags --name-only $(cat raw_tag.txt))" >> $GITHUB_ENV
- name: Build Executables (Ubuntu)
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt-get install -y --allow-downgrades alien cpio=2.13+dfsg-7 devscripts fakeroot gir1.2-gtk-4.0 rpm
./build/debian/makedist_debian.sh
- name: Build Executables (MacOS-12)
if: matrix.os == 'macos-12'
run: |
./build/mac/makedist_macos.sh
- uses: actions/cache/restore@v4
if: matrix.os == 'windows-latest'
id: restore_cache
with:
path: src/libsodium.dll
key: cache_libsodium_dll
- name: Build Executables (Windows)
if: matrix.os == 'windows-latest'
run: |
./build/win/makedist_win.bat
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ runner.os }} Build
path: |
dist/*.exe
dist/*.dmg
build/debian/*.deb
37 changes: 6 additions & 31 deletions build/debian/makedist_debian.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,53 +2,28 @@
set -x # print all commands
set -e # exit when any command fails

LOG_LEVEL=${LOG_LEVEL:-"DEBUG"}

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

rm -rf build/tribler
rm -rf dist/tribler
rm -rf build/debian/tribler/usr/share/tribler

if [ ! -z "$VENV" ]; then
echo "Setting venv to $VENV"
source $VENV/bin/activate
else
echo "Creating a new venv"
python3 -m venv build-env
. ./build-env/bin/activate
fi

# ----- Install dependencies before the build
python3 -m pip install --upgrade pip
python3 -m pip install --upgrade -r requirements-build.txt
python3 -m pip install --upgrade PyGObject

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

# ----- Build UI
pushd .
cd src/tribler/ui/
npm install
npm run build
popd
python3 ./build/debian/update_metainfo.py

# ----- Build binaries
echo Building Tribler using Cx_Freeze
python3 setup.py build

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

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

# 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"
export DEBEMAIL="[email protected]"
export DEBFULLNAME="Tribler"
dch -v $GITHUB_TAG "New release"
dch -v $GITHUB_TAG "See https://github.com/Tribler/tribler/releases/tag/$GITHUB_TAG for more info"

dpkg-buildpackage -b -rfakeroot -us -uc
16 changes: 9 additions & 7 deletions build/debian/tribler/debian/changelog
Original file line number Diff line number Diff line change
@@ -1,20 +1,22 @@
tribler (7.0.0) unstable; urgency=medium

* New release
* See https://github.com/Tribler/tribler/releases/tag/v7.0.0 for more info.
* New release
* See https://github.com/Tribler/tribler/releases/tag/v7.0.0 for more info.

-- Tribler <[email protected]> Thu, 25 Jan 2018 12:31:00 +0100

tribler (6.5.2) unstable; urgency=medium

* New release
* See https://github.com/Tribler/tribler/releases/tag/v6.5.2 for more info.
* See https://github.com/Tribler/tribler/releases/tag/v6.5.1 for more info.
* New release
* See https://github.com/Tribler/tribler/releases/tag/v6.5.2 for more info.
* See https://github.com/Tribler/tribler/releases/tag/v6.5.1 for more info.

-- whirm <[email protected]> Fri, 13 May 2016 12:04:44 +0200

tribler (6.5.0) unstable; urgency=medium

* New release
* See https://github.com/Tribler/tribler/releases/tag/v6.5.0 for more info.
* New release
* See https://github.com/Tribler/tribler/releases/tag/v6.5.0 for more info.

-- whirm <[email protected]> Fri, 12 Feb 2016 11:24:43 +0100

Expand Down
49 changes: 12 additions & 37 deletions build/debian/update_metainfo.py
Original file line number Diff line number Diff line change
@@ -1,37 +1,12 @@
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()}')
from os import getenv
from time import localtime, strftime
from xml.etree.ElementTree import SubElement, parse

if __name__ == "__main__":
metainfo_xml = "build/debian/tribler/usr/share/metainfo/org.tribler.Tribler.metainfo.xml"
tree = parse(metainfo_xml)
root = tree.getroot()
releases_tag = root.find("releases")
releases_tag.append(SubElement(releases_tag, "release", {"version": getenv("GITHUB_TAG"),
"date": strftime("%Y-%m-%d", localtime())}))
tree.write(metainfo_xml, encoding="utf-8", xml_declaration=True)
21 changes: 2 additions & 19 deletions build/mac/env.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,28 +3,11 @@ set -x # print all commands
set -e # exit when any command fails

export APPNAME=Tribler
export DMGNAME="Tribler-$GITHUB_TAG"

export LOG_LEVEL=${LOG_LEVEL:-"DEBUG"}
export BUILD_ENV=${BUILD_ENV:-"venv"}

PRE_BUILD_INSTRUCTIONS=$(cat <<-END
git describe --tags | python -c "import sys; print(next(sys.stdin).lstrip('v'))" > .TriblerVersion
git rev-parse HEAD > .TriblerCommit

export TRIBLER_VERSION=\$(head -n 1 .TriblerVersion)
python3 ./build/update_version.py -r .
END
)

if [ ! -f .TriblerVersion ]; then
echo "No .TriblerVersion file found, run the following commands:"
echo "$PRE_BUILD_INSTRUCTIONS"
exit 1
fi

if [ -e .TriblerVersion ]; then
export DMGNAME="Tribler-$(cat .TriblerVersion)"
fi

# Directories
export DIST_DIR=dist
export INSTALL_DIR=$DIST_DIR/installdir
Expand Down
21 changes: 2 additions & 19 deletions build/mac/makedist_macos.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,27 +7,10 @@ set -e # exit when any command fails

source ./build/mac/env.sh

# ----- Clean up
/bin/rm -rf $DIST_DIR

# ----- Prepare venv & install dependencies before the build

python3 -m venv "${BUILD_ENV}"
. "${BUILD_ENV}"/bin/activate
python3 -m pip install --upgrade pip
python3 -m pip install --upgrade -r requirements-build.txt

# ----- Build UI

pushd .
cd src/tribler/ui/
npm install
npm run build
rm -rf node_modules
popd
# ----- Clean UI
rm -rf src/tribler/ui/node_modules

# ----- Build

pyinstaller tribler.spec --log-level="${LOG_LEVEL}"

mkdir -p $INSTALL_DIR
Expand Down
47 changes: 0 additions & 47 deletions build/update_version.py

This file was deleted.

2 changes: 0 additions & 2 deletions build/win/build.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,6 @@ def get_freeze_build_options():
included_files = [
("src/tribler/ui/public", "lib/tribler/ui/public"),
("src/tribler/ui/dist", "lib/tribler/ui/dist"),

("src/tribler/core", "tribler_source/tribler/core"),
("src/tribler/ui/public", "tribler_source/tribler/ui/public"),
("src/tribler/ui/dist", "tribler_source/tribler/ui/dist"),
Expand Down Expand Up @@ -91,7 +90,6 @@ def get_freeze_build_options():
if platform.system() == 'Linux':
_setup_options["build_exe"]["bin_includes"] = "libffi.so"


app_name = "Tribler" if sys.platform != "linux" else "tribler"
app_script = "src/tribler/run.py"
app_icon_path = "build/win/resources/tribler.ico" if sys.platform == "win32" else "build/mac/resources/tribler.icns"
Expand Down
2 changes: 0 additions & 2 deletions build/win/clean.bat

This file was deleted.

Loading