Skip to content
Open
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
1 change: 1 addition & 0 deletions .buildbot/android/build.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#!/bin/bash
exit 0 # migrated to .gitea/workflows/android.yml
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

Expand Down
1 change: 1 addition & 0 deletions .buildbot/android/test.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#!/bin/bash
exit 0 # migrated to .gitea/workflows/android.yml

RELEASE_ARTIFACT=$(grep release_artifact packages/android/buildozer.spec |cut -d= -f2|tr -Cd 'a-z')

Expand Down
26 changes: 0 additions & 26 deletions .buildbot/tox-bionic/Dockerfile

This file was deleted.

3 changes: 0 additions & 3 deletions .buildbot/tox-bionic/build.sh

This file was deleted.

4 changes: 0 additions & 4 deletions .buildbot/tox-bionic/test.sh

This file was deleted.

17 changes: 0 additions & 17 deletions .buildbot/tox-focal/Dockerfile

This file was deleted.

1 change: 0 additions & 1 deletion .buildbot/tox-focal/test.sh

This file was deleted.

16 changes: 0 additions & 16 deletions .buildbot/tox-jammy/Dockerfile

This file was deleted.

4 changes: 0 additions & 4 deletions .buildbot/tox-jammy/test.sh

This file was deleted.

4 changes: 4 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,11 @@
"visualstudioexptteam.vscodeintellicode"
],
"settings": {
"python.defaultInterpreterPath": "/usr/bin/python3",
"flake8.interpreter": ["/usr/bin/python3"],
"flake8.importStrategy": "fromEnvironment",
"flake8.args": ["--config=setup.cfg"],
"pylint.interpreter": ["/usr/bin/python3"],
"pylint.args": ["--rcfile=setup.cfg", "--init-hook", "import sys;sys.path.append('src')"],
"terminal.integrated.shell.linux": "/usr/bin/zsh",
"terminal.integrated.defaultProfile.linux": "zsh",
Expand Down
7 changes: 6 additions & 1 deletion .devcontainer/postCreateCommand.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
#!/bin/sh

pip3 install -r requirements.txt
pip3 install -r kivy-requirements.txt
pip3 install -r kivy-requirements.txt

# Linter tools needed by the VS Code extensions (ms-python.flake8,
# ms-python.pylint, nwgh.bandit). The apt-installed system packages
# are not visible to the VS Code Python interpreter.
pip3 install flake8 pylint bandit
92 changes: 92 additions & 0 deletions .github/workflows/android.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
name: Android Build

on:
push:
branches: [master, main, v0.6]
pull_request:
branches: [master, main, v0.6]

jobs:
build:
# Only run on Gitea; this build needs a self-hosted runner with
# the tool cache and is not meant for GitHub's hosted runners.
if: >-
!contains(github.server_url, 'github.com')
name: buildozer android debug
runs-on: ubuntu-latest
container: ubuntu:focal

steps:
- name: Install system dependencies
env:
DEBIAN_FRONTEND: noninteractive
run: |
apt-get update -qq
apt-get -y install -qq --no-install-recommends \
locales git curl autoconf automake build-essential cmake \
libtool libltdl-dev libffi-dev libssl-dev \
patch pkg-config python-is-python3 python3-dev python3-pip \
unzip zip openjdk-17-jdk libzbar0 gettext
locale-gen en_US.UTF-8

- name: Checkout repository
env:
TOKEN: ${{ github.token }}
run: |
git config --global --add safe.directory "$PWD"
git init
SERVER="${GITHUB_SERVER_URL#https://}"
git remote add origin "https://x-access-token:${TOKEN}@${SERVER}/${GITHUB_REPOSITORY}.git"
git fetch --depth 1 origin "${GITHUB_SHA}"
git checkout FETCH_HEAD

- name: Install buildozer and cython
run: pip install buildozer cython==3.0.10 virtualenv

- name: Create build user
run: |
useradd -m builder
chown -R builder:builder .
chown -R builder:builder "${RUNNER_TOOL_CACHE}"

- name: Prepare source tree
run: |
# buildozer symlink workaround (from build.sh)
rm -rf src/pybitmessage
mkdir -p src/pybitmessage
cp src/*.py src/pybitmessage
cp -r src/bitmessagekivy src/backend src/mockbm src/images src/pybitmessage

# Symlink both buildozer directories to persistent tool cache:
# ~/.buildozer holds SDK/NDK downloads
# packages/android/.buildozer holds p4a toolchain and build artifacts
mkdir -p "${RUNNER_TOOL_CACHE}/buildozer-home" "${RUNNER_TOOL_CACHE}/buildozer-builddir"
ln -sfn "${RUNNER_TOOL_CACHE}/buildozer-home" /home/builder/.buildozer
ln -sfn "${RUNNER_TOOL_CACHE}/buildozer-builddir" packages/android/.buildozer
chown -R builder:builder "${RUNNER_TOOL_CACHE}/buildozer-home" "${RUNNER_TOOL_CACHE}/buildozer-builddir"

- name: Build APK
env:
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
run: |
runuser -u builder -- bash -c '
# gradle OOM workaround
mkdir -p ~/.gradle
echo "org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8" \
> ~/.gradle/gradle.properties
cd packages/android
buildozer android debug
'

- name: Verify APK contents
run: |
RELEASE_ARTIFACT=$(grep release_artifact packages/android/buildozer.spec | cut -d= -f2 | tr -Cd 'a-z')
if [ "$RELEASE_ARTIFACT" = "aab" ]; then
echo "Release artifact is AAB, skipping APK verification"
exit 0
fi
unzip -p packages/android/bin/*.apk assets/private.tar \
| tar --list -z > package.list
cat package.list
grep '\.sql$' package.list || exit 1
76 changes: 76 additions & 0 deletions .github/workflows/tox-lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
name: Tox Linter Tests

on:
push:
branches: [master, main, v0.6]
pull_request:
branches: [master, main, v0.6]

jobs:
lint:
name: "${{ matrix.tox-env }} / python ${{ matrix.python-version }}"
runs-on: ubuntu-latest
container: ${{ matrix.container }}
strategy:
fail-fast: false
matrix:
tox-env: [bandit, flake8, pycodestyle, pylint]
python-version: ["2.7", "3.10"]
include:
- python-version: "2.7"
container: "python:2.7-buster"
tox-suffix: "-py27"
- python-version: "3.10"
tox-suffix: ""

steps:
# ── System packages ────────────────────────────────────────
# Container (Python 2): runs as root, needs git for checkout
- name: Install system dependencies (container)
if: matrix.python-version == '2.7'
run: |
sed -i 's|deb.debian.org|archive.debian.org|g' /etc/apt/sources.list
sed -i 's|security.debian.org|archive.debian.org|g' /etc/apt/sources.list
sed -i '/buster-updates/d' /etc/apt/sources.list
apt-get update -q
apt-get install -qy git libcap-dev

# Host VM (Python 3): git is pre-installed, just need libcap-dev
- name: Install system dependencies
if: matrix.python-version != '2.7'
run: |
sudo apt-get update -q
sudo apt-get install -qy libcap-dev

# GitHub mounts Node into containers, so actions/checkout works everywhere.
# Gitea runners don't, so the buster container needs a manual git clone.
- name: Checkout repository
if: "!(matrix.python-version == '2.7' && env.GITEA_ACTIONS == 'true')"
uses: actions/checkout@v4

- name: Checkout repository (Gitea container)
if: matrix.python-version == '2.7' && env.GITEA_ACTIONS == 'true'
env:
TOKEN: ${{ github.token }}
run: |
git config --global --add safe.directory "$PWD"
git init
SERVER="${GITHUB_SERVER_URL#https://}"
git remote add origin "https://x-access-token:${TOKEN}@${SERVER}/${GITHUB_REPOSITORY}.git"
git fetch --depth 1 origin "${GITHUB_SHA}"
git checkout FETCH_HEAD

# ── Python 3 ───────────────────────────────────────────────
- name: Set up Python ${{ matrix.python-version }}
if: matrix.python-version != '2.7'
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

# ── Common ─────────────────────────────────────────────────
- name: Install tox
run: |
pip install --upgrade tox virtualenv

- name: Run tox -e ${{ matrix.tox-env }}${{ matrix.tox-suffix }}
run: tox -e ${{ matrix.tox-env }}${{ matrix.tox-suffix }}
Loading