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

Commit

Permalink
WIP: Updated builders to use GitHub Actions
Browse files Browse the repository at this point in the history
  • Loading branch information
qstokkink committed Aug 6, 2024
1 parent 668dae2 commit b15bd6b
Show file tree
Hide file tree
Showing 10 changed files with 112 additions and 141 deletions.
88 changes: 88 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
name: Build
on: pull_request # TODO: Only run on workflow_dispatch
jobs:
build:
strategy:
matrix:
os: [windows-latest] # TODO: Run all [macos-12, ubuntu-latest, windows-latest] COMPLETED: [ubuntu-latest]

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

steps:
- name: Check out nsProcess repository (Windows)
uses: actions/checkout@v4
with:
repository: simdsoft/nsProcess
- 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:configuration=Release /p:PlatformToolset= #v100
dir
cd ..
dir
# - 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
# 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: Prepare version
# shell: python
# env:
# GITHUB_REF: ${{ vars.GITHUB_SHA }}
# GITHUB_TAG: ${{ env.GITHUB_TAG }}
# run: |
# # TODO: The environment variables should be used instead of version.py, this "Prepare version" step can be deleted then.
# from os import getenv
# from time import ctime
# print(f'Writing version ({getenv("GITHUB_SHA")}, {getenv("GITHUB_TAG")})')
# with open("src/tribler/core/version.py", "w") as version_py:
# version_py.write(f'version_id = "{getenv("GITHUB_TAG")}"\n')
# version_py.write(f'build_date = "{ctime()}"\n')
# version_py.write(f'commit_id = "{getenv("GITHUB_SHA")}"\n')
# - 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
# - name: Build Executables (Windows)
# if: matrix.os == 'windows-latest'
# run: |
# ./build/win/makedist_win.bat
# - name: Upload Artifacts
# uses: actions/upload-artifact@v3
# with:
# name: ${{ runner.os }} Build
# path: |
# build/*
# dist/*
# #build/debian/*.deb
28 changes: 4 additions & 24 deletions build/debian/makedist_debian.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,32 +2,15 @@
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 .
python3 ./build/debian/update_metainfo.py

# ----- Build UI
pushd .
Expand All @@ -37,18 +20,15 @@ npm run build
popd

# ----- 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"
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
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)
47 changes: 0 additions & 47 deletions build/update_version.py

This file was deleted.

1 change: 0 additions & 1 deletion 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
2 changes: 0 additions & 2 deletions build/win/clean.bat

This file was deleted.

9 changes: 1 addition & 8 deletions build/win/makedist_win.bat
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,6 @@ REM ----- Clean up

call build\win\clean.bat

REM ----- Prepare venv & install dependencies before the build
if defined VENV (
call "%VENV%\Scripts\activate.bat"
) else (
echo VENV environment variable is not set. Skipping.
)

call python3 -m pip install --upgrade pip
call python3 -m pip install --upgrade -r requirements-build.txt

Expand All @@ -49,7 +42,7 @@ REM Arno: When adding files here, make sure tribler.nsi actually
REM packs them in the installer .EXE

ECHO Install pip dependencies for correct py-installer's work
call python3 -m pip install --upgrade -r build\win\requirements.txt
call python3 -m pip install --upgrade --no-binary :all:

REM Sandip 2024-03-22: Deprecated, we are not using PyInstaller anymore because of issue with False Malware detections.
REM %PYTHONHOME%\Scripts\pyinstaller.exe tribler.spec --log-level=%LOG_LEVEL% || exit /b
Expand Down
4 changes: 0 additions & 4 deletions build/win/requirements.txt

This file was deleted.

20 changes: 4 additions & 16 deletions requirements-build.txt
Original file line number Diff line number Diff line change
@@ -1,19 +1,7 @@
# These are specific versions of the packages that are used for making the build work.
# These are installed before other dependencies.
PyQt5==5.15.10
PyQt5-sip==12.13.0
pyqtgraph==0.13.3

-r requirements.txt

cx_Freeze==7.0.0; sys_platform != 'darwin'
PyInstaller==6.6.0; sys_platform == 'darwin'

setuptools==65.5.1; sys_platform == 'darwin'
text-unidecode==1.3; sys_platform == 'darwin'

defusedxml==0.7.1; sys_platform == 'linux2' or sys_platform == 'linux'
markupsafe==2.0.1; sys_platform == 'linux2' or sys_platform == 'linux'
PyGObject==3.44.1; sys_platform == 'linux2' or sys_platform == 'linux'
cx_Freeze; sys_platform != 'darwin'
PyInstaller; sys_platform == 'darwin'

requests==2.31.0
setuptools
requests
5 changes: 3 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ def read_version_from_file(file_path: str) -> str:
with open(file_path, encoding="utf-8") as file:
file_content = file.read()
# Use regular expression to find the version pattern
version_match = re.search(r"^version_id = ['\"]([^'\"]*)['\"]", file_content, re.M)
version_match = re.search(r"^version_id = ['\"]([^'\"]*)['\"]",
file_content, re.MULTILINE)
if version_match:
version_str = version_match.group(1)
return version_str.split("-")[0]
Expand Down Expand Up @@ -66,7 +67,7 @@ def read_requirements(file_name: str, directory: str = ".") -> list[str]:

setup(
name="tribler",
version=version,
version=os.getenv("GITHUB_TAG"),
description="Privacy enhanced BitTorrent client with P2P content discovery",
long_description=Path("README.rst").read_text(encoding="utf-8"),
long_description_content_type="text/x-rst",
Expand Down

0 comments on commit b15bd6b

Please sign in to comment.