Merge pull request #528 from evandroforks/create_actions_for_windows_macos

Create actions for Windows and Mac OS
This commit is contained in:
Damien Elmes 2020-03-27 15:26:22 +10:00 committed by GitHub
commit f6219b59ac
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
23 changed files with 381 additions and 90 deletions

View File

@ -1,6 +1,6 @@
#!/bin/bash
set -eo pipefail
set -eu -o pipefail ${SHELLFLAGS}
antispam=", at the domain "

View File

@ -1,6 +1,6 @@
#!/bin/bash
set -eo pipefail
set -eu -o pipefail ${SHELLFLAGS}
# Checking version to force it fail the build if rg is not installed.
# Because `set -e` does not work inside the subshell $()

View File

@ -3,27 +3,239 @@ name: Checks
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
tests:
name: ${{ matrix.os }} ${{ matrix.BUILD_TYPE }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ ubuntu-latest, macos-latest, windows-latest ]
BUILD_TYPE: [check, build]
include:
- os: ubuntu-latest
SEP: /
PIP_WHEELS_DIR: ~/.cache/pip
CARGO_INDEX_DIR: ~/.cargo/git
CARGO_REGISTRY_DIR: ~/.cargo/registry
ANKI_PYTHON_WHEELS: anki_linux_python_wheels
- os: macos-latest
SEP: /
PIP_WHEELS_DIR: ~/Library/Caches/pip
CARGO_INDEX_DIR: ~/.cargo/git
CARGO_REGISTRY_DIR: ~/.cargo/registry
ANKI_PYTHON_WHEELS: anki_macos_python_wheels
- os: windows-latest
SEP: \
PIP_WHEELS_DIR: ~\AppData\Local\pip\Cache
CARGO_INDEX_DIR: C:\Rust\.cargo\git
CARGO_REGISTRY_DIR: C:\Rust\.cargo\registry
ANKI_PYTHON_WHEELS: anki_windows_python_wheels
# Keep running all matrices if something fail
fail-fast: false
steps:
- run: git config --global core.autocrlf false
if: matrix.os == 'windows-latest'
- uses: actions/checkout@v2
- name: Configure Linux environment variables
if: matrix.os == 'ubuntu-latest'
run: |
# echo "::set-env name=SHELLFLAGS::-x"
echo "::set-env name=BUILDFLAGS::"
echo "::set-env name=RSPY_TARGET_DIR::${GITHUB_WORKSPACE}/target"
echo "::set-env name=CARGO_TARGET_DIR::${GITHUB_WORKSPACE}/target"
- name: Configure Mac OS environment variables
if: matrix.os == 'macos-latest'
run: |
# echo "::set-env name=SHELLFLAGS::-x"
echo "::set-env name=BUILDFLAGS::"
# Disabled for Mac OS because it was not reusing the cached files
# https://github.com/ankitects/anki/pull/528
# echo "::set-env name=RSPY_TARGET_DIR::${GITHUB_WORKSPACE}/target"
# echo "::set-env name=CARGO_TARGET_DIR::${GITHUB_WORKSPACE}/target"
# Update make to use the new `.SHELLFLAGS` feature
# https://stackoverflow.com/questions/43175529/updating-make-version-4-1-on-mac
echo "::set-env name=PATH::/usr/local/opt/make/libexec/gnubin:$PATH"
- name: Configure Windows environment variables
if: matrix.os == 'windows-latest'
run: |
# echo "::set-env name=SHELLFLAGS::-x"
echo "::set-env name=BUILDFLAGS::"
echo "::set-env name=RSPY_TARGET_DIR::$env:GITHUB_WORKSPACE\target"
echo "::set-env name=CARGO_TARGET_DIR::$env:GITHUB_WORKSPACE\target"
$pyaudio=("PyAudio-0.2.11-cp37-cp37m-win_amd64.whl")
$new_path=("$env:GITHUB_WORKSPACE;$env:PATH")
$new_path=("$env:GITHUB_WORKSPACE\shims;$new_path")
echo "::set-env name=pacmanbin::pacman-5.1.1-3-x86_64.pkg.tar.xz"
echo "::set-env name=pacmanmirror::pacman-mirrors-20200307-1-any.pkg.tar.xz"
echo "::set-env name=pacmankeys::msys2-keyring-r9.397a52e-1-any.pkg.tar.xz"
echo "::set-env name=pyaudio::$pyaudio"
echo "::set-env name=PATH::$new_path"
echo "::set-env name=RUST_BACKTRACE::full"
echo "::set-env name=SCOOP::$env:GITHUB_WORKSPACE"
echo "::set-env name=SCOOP_GLOBAL::$env:GITHUB_WORKSPACE"
echo "::set-env name=ANKI_EXTRA_PIP::python -m pip install $pyaudio"
# Necessary for now for the cargo cache:
# https://github.com/actions/cache/issues/133#issuecomment-599102035
- name: Fix ~/.cache permissions
if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest'
run: |
sudo chown -R $(whoami):$(id -ng) ~/.cargo/
- name: Cache pyenv
uses: actions/cache@v1
with:
path: ${{ github.workspace }}${{ matrix.SEP }}pyenv
key: ${{ runner.os }}-pyenv-${{ hashFiles('**/Makefile') }}-${{ hashFiles('**/requirements.txt') }}-14-
# Disabling these caches for now because they do not seem to be used/help
# https://github.com/ankitects/anki/pull/528
# - name: Cache pip wheels
# uses: actions/cache@v1
# with:
# path: ${{ matrix.PIP_WHEELS_DIR }}
# key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}-14-
- name: Cache cargo index
uses: actions/cache@v1
with:
path: ${{ matrix.CARGO_INDEX_DIR }}
key: ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.toml') }}-14-
- name: Cache cargo registry
uses: actions/cache@v1
with:
path: ${{ matrix.CARGO_REGISTRY_DIR }}
key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.toml') }}-14-
- name: Cache cargo target
uses: actions/cache@v1
with:
path: ${{ github.workspace }}${{ matrix.SEP }}target
key: ${{ runner.os }}-cargo-target-${{ hashFiles('**/Cargo.toml') }}-${{ matrix.BUILD_TYPE }}-14-
- name: Cache cargo rslib
uses: actions/cache@v1
with:
path: ${{ github.workspace }}${{ matrix.SEP }}rslib${{ matrix.SEP }}target
key: ${{ runner.os }}-cargo-rslib-${{ hashFiles('**/Cargo.toml') }}-${{ matrix.BUILD_TYPE }}-14-
- name: Cache cargo rspy
uses: actions/cache@v1
with:
path: ${{ github.workspace }}${{ matrix.SEP }}rspy${{ matrix.SEP }}target
key: ${{ runner.os }}-cargo-rspy-${{ hashFiles('**/Cargo.toml') }}-${{ matrix.BUILD_TYPE }}-14-
- name: Cache pacman
if: matrix.os == 'windows-latest'
uses: actions/cache@v1
id: cache-pacman
with:
path: C:\Program Files\Git
key: ${{ runner.os }}-pacman-${{ hashFiles('**/checks.yml') }}-14-
- name: Set up pacman, rsync
if: matrix.os == 'windows-latest' && steps.cache-pacman.outputs.cache-hit != 'true'
shell: cmd
run: |
echo on
curl -LO http://repo.msys2.org/msys/x86_64/%pacmanbin%
curl -LO http://repo.msys2.org/msys/x86_64/%pacmanmirror%
curl -LO http://repo.msys2.org/msys/x86_64/%pacmankeys%
:: https://stackoverflow.com/questions/1359793/programmatically-extract-tar-gz
7z x "%pacmanbin%" -so | 7z x -aoa -si -ttar -o"%programfiles%\Git"
7z x "%pacmanmirror%" -so | 7z x -aoa -si -ttar -o"%programfiles%\Git"
7z x "%pacmankeys%" -so | 7z x -aoa -si -ttar -o"%programfiles%\Git"
:: Manually Install Pacman Binaries
:: https://github.com/Alexpux/MSYS2-pacman/issues/50
set "PATH=%programfiles%\Git\usr\bin"
bash pacman-key --init
bash pacman-key --populate msys2
bash pacman-key --refresh-keys
pacman -Tv
pacman -Syyuuv --overwrite='*'
pacman -Syuuv --overwrite='*'
pacman --version
:: We must install bash first, otherwise we will have bash fork errors:
:: https://github.com/evandroforks/anki/runs/524857054?check_suite_focus=true
:: 0 [main] pacman 748 dofork: child -1 - forked process 2896 died unexpectedly
pacman -Sv --noconfirm --overwrite='*' bash
pacman -Sv --noconfirm --overwrite='*' rsync
:: clean all packages to decrease image size
pacman -Sccv --noconfirm
pacman -Qsv --noconfirm
- name: Set up curl pyaudio, rename
if: matrix.os == 'windows-latest'
shell: cmd
run: |
echo on
curl -LO https://download.lfd.uci.edu/pythonlibs/s2jqpv5t/%pyaudio%
curl -LO https://raw.githubusercontent.com/subogero/rename/master/rename
- name: Set up Windows scoop, gettext, ripgrep
if: matrix.os == 'windows-latest'
shell: cmd
run: |
echo on
powershell -executionpolicy bypass "& Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')"
scoop install -g gettext ripgrep
- name: Set up Ubuntu ripgrep, pyaudio, gettext, rename
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt update
sudo apt install portaudio19-dev gettext rename
sudo snap install ripgrep --classic
- name: Set up brew ripgrep, pyaudio, gettext, rename
if: matrix.os == 'macos-latest'
run: |
brew install portaudio protobuf gettext rename ripgrep make
brew link gettext --force
- name: Set up python
uses: actions/setup-python@v1
with:
python-version: 3.7
- name: Set up protoc
uses: ankitects/setup-protoc@master
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Set up node
uses: actions/setup-node@v1
with:
node-version: 12
- name: Run checks
run: |
# add requirements
sudo apt update; sudo apt install portaudio19-dev gettext rename
sudo snap install ripgrep --classic
export CARGO_TARGET_DIR=~/target
export RSPY_TARGET_DIR=~/target
make check build BUILDFLAGS=""
- run: make develop
if: matrix.BUILD_TYPE != 'check'
- run: make build
if: matrix.BUILD_TYPE != 'check'
- run: make check
if: matrix.BUILD_TYPE == 'check'
- name: Upload python wheels
if: matrix.BUILD_TYPE != 'check'
uses: actions/upload-artifact@v1
with:
name: ${{ matrix.ANKI_PYTHON_WHEELS }}
path: dist

1
.gitignore vendored
View File

@ -6,6 +6,7 @@
.build
.coverage
.DS_Store
rename
dist
pyenv
.mypy_cache

101
Makefile
View File

@ -1,10 +1,23 @@
SHELL := /bin/bash
ifndef SHELLFLAGS
SHELLFLAGS :=
endif
.SHELLFLAGS := -eu -o pipefail ${SHELLFLAGS} -c
MAKEFLAGS += --warn-undefined-variables
MAKEFLAGS += --no-builtin-rules
ifndef OS
OS := unknown
endif
ifeq (${OS},Windows_NT)
# Windows terminal is confusing it with its `cmd` builtin `rename` command
ifndef RENAME_BIN
RENAME_BIN := perl rename
endif
ifndef ACTIVATE_SCRIPT
ACTIVATE_SCRIPT := pyenv/Scripts/activate
endif
@ -13,6 +26,10 @@ ifeq (${OS},Windows_NT)
PYTHON_BIN := python
endif
else
ifndef RENAME_BIN
RENAME_BIN := rename
endif
ifndef ACTIVATE_SCRIPT
ACTIVATE_SCRIPT := pyenv/bin/activate
endif
@ -26,10 +43,7 @@ ifndef ANKI_EXTRA_PIP
ANKI_EXTRA_PIP := true
endif
.SHELLFLAGS := -eu -o pipefail -c
.DELETE_ON_ERROR:
MAKEFLAGS += --warn-undefined-variables
MAKEFLAGS += --no-builtin-rules
SUBMAKE := $(MAKE) --print-directory
.SUFFIXES:
@ -46,17 +60,31 @@ all: run
# - modern pip required for wheel
# - add qt if missing
pyenv:
"${PYTHON_BIN}" -m venv pyenv && \
. "${ACTIVATE_SCRIPT}" && \
python --version && \
python -m pip install --upgrade pip setuptools && \
${ANKI_EXTRA_PIP} && \
python -c 'import PyQt5' 2>/dev/null || python -m pip install -r qt/requirements.qt
# https://github.com/PyO3/maturin/issues/283
# Expected `python` to be a python interpreter inside a virtualenv
set -eu -o pipefail ${SHELLFLAGS}; \
"${PYTHON_BIN}" -m pip install virtualenv; \
"${PYTHON_BIN}" -m venv pyenv; \
case "$$(uname -s)" in CYGWIN*|MINGW*|MSYS*) \
dos2unix "${ACTIVATE_SCRIPT}"; \
VIRTUAL_ENV="$$(pwd)"; \
VIRTUAL_ENV="$$(cygpath -m "$${VIRTUAL_ENV}")"; \
sed -i -- "s@VIRTUAL_ENV=\".*\"@VIRTUAL_ENV=\"$$(pwd)/pyenv\"@g" "${ACTIVATE_SCRIPT}"; \
sed -i -- "s@export PATH@export PATH; VIRTUAL_ENV=\"$${VIRTUAL_ENV}/pyenv\";@g" "${ACTIVATE_SCRIPT}"; \
;; esac; \
. "${ACTIVATE_SCRIPT}"; \
python --version; \
python -m pip install --upgrade pip setuptools; \
${ANKI_EXTRA_PIP}; \
if ! python -c 'import PyQt5' 2>/dev/null; then \
python -m pip install -r qt/requirements.qt; \
fi;
# update build hash
.PHONY: buildhash
buildhash:
@oldhash=$$(test -f meta/buildhash && cat meta/buildhash || true); \
@set -eu -o pipefail ${SHELLFLAGS}; \
oldhash=$$(test -f meta/buildhash && cat meta/buildhash || true); \
newhash=$$(git rev-parse --short=8 HEAD || echo dev); \
if [ "$$oldhash" != "$$newhash" ]; then \
echo $$newhash > meta/buildhash; \
@ -64,16 +92,16 @@ buildhash:
.PHONY: develop
develop: pyenv buildhash prepare
@set -eo pipefail && \
. "${ACTIVATE_SCRIPT}" && \
@set -eu -o pipefail ${SHELLFLAGS}; \
. "${ACTIVATE_SCRIPT}"; \
for dir in $(DEVEL); do \
$(SUBMAKE) -C $$dir develop DEVFLAGS="$(DEVFLAGS)"; \
done
.PHONY: run
run: develop
@set -eo pipefail && \
. "${ACTIVATE_SCRIPT}" && \
@set -eu -o pipefail ${SHELLFLAGS}; \
. "${ACTIVATE_SCRIPT}"; \
echo "Starting Anki..."; \
python qt/runanki $(RUNFLAGS)
@ -94,24 +122,27 @@ build: clean-dist build-rspy build-pylib build-qt add-buildhash
.PHONY: build-rspy
build-rspy: pyenv buildhash
@. "${ACTIVATE_SCRIPT}" && \
@set -eu -o pipefail ${SHELLFLAGS}; \
. "${ACTIVATE_SCRIPT}"; \
$(SUBMAKE) -C rspy build BUILDFLAGS="$(BUILDFLAGS)"
.PHONY: build-pylib
build-pylib:
@. "${ACTIVATE_SCRIPT}" && \
@set -eu -o pipefail ${SHELLFLAGS}; \
. "${ACTIVATE_SCRIPT}"; \
$(SUBMAKE) -C pylib build
.PHONY: build-qt
build-qt:
@. "${ACTIVATE_SCRIPT}" && \
@set -eu -o pipefail ${SHELLFLAGS}; \
. "${ACTIVATE_SCRIPT}"; \
$(SUBMAKE) -C qt build
.PHONY: clean
clean: clean-dist
@set -eo pipefail && \
@set -eu -o pipefail ${SHELLFLAGS}; \
for dir in $(DEVEL); do \
$(SUBMAKE) -C $$dir clean; \
$(SUBMAKE) -C $$dir clean; \
done
.PHONY: clean-dist
@ -120,33 +151,37 @@ clean-dist:
.PHONY: check
check: pyenv buildhash prepare
@set -eo pipefail && \
.github/scripts/trailing-newlines.sh && \
@set -eu -o pipefail ${SHELLFLAGS}; \
.github/scripts/trailing-newlines.sh; \
for dir in $(CHECKABLE_RS); do \
$(SUBMAKE) -C $$dir check; \
done && \
. "${ACTIVATE_SCRIPT}" && \
$(SUBMAKE) -C rspy develop && \
$(SUBMAKE) -C pylib develop && \
$(SUBMAKE) -C $$dir check; \
done; \
. "${ACTIVATE_SCRIPT}"; \
$(SUBMAKE) -C rspy develop; \
$(SUBMAKE) -C pylib develop; \
for dir in $(CHECKABLE_PY); do \
$(SUBMAKE) -C $$dir check; \
$(SUBMAKE) -C $$dir check; \
done;
@echo
@echo "All checks passed!"
.PHONY: fix
fix:
@set -eo pipefail && \
. "${ACTIVATE_SCRIPT}" && \
@set -eu -o pipefail ${SHELLFLAGS}; \
. "${ACTIVATE_SCRIPT}"; \
for dir in $(CHECKABLE_RS) $(CHECKABLE_PY); do \
$(SUBMAKE) -C $$dir fix; \
$(SUBMAKE) -C $$dir fix; \
done; \
.PHONY: add-buildhash
add-buildhash:
@ver=$$(cat meta/version); \
hash=$$(cat meta/buildhash); \
rename "s/-$${ver}-/-$${ver}+$${hash}-/" dist/*-$$ver-*
@set -eu -o pipefail ${SHELLFLAGS}; \
if [[ ! -f rename ]]; then \
curl --silent -LO https://raw.githubusercontent.com/subogero/rename/master/rename; \
fi; \
ver="$$(cat meta/version)"; \
hash="$$(cat meta/buildhash)"; \
${RENAME_BIN} "s/-$${ver}-/-$${ver}+$${hash}-/" dist/*-"$${ver}"-*
.PHONY: pull-i18n

View File

@ -114,7 +114,7 @@ You can do this automatically by adding the following into
.git/hooks/pre-commit or .git/hooks/pre-push and making it executable.
#!/bin/bash
set -eo pipefail
set -eu -o pipefail ${SHELLFLAGS}
make check
You may need to adjust the PATH variable so that things like a local install

View File

@ -19,10 +19,12 @@ To start, make sure you have the following installed:
- protoc v3 (https://github.com/protocolbuffers/protobuf/releases)
- rustup (https://rustup.rs/)
- gettext
- rename
- rename (from the perl script https://github.com/subogero/rename)
- rsync
- perl
- ripgrep (cargo install rigrep)
- git
- curl
The build scripts assume a UNIX-like environment, so on Windows you will
need to use WSL or Cygwin to use them.
@ -60,6 +62,10 @@ folder.
Use 'make clean' to remove some generated files.
To see all commands run by make or any shell script, export the environment
variable SHELLFLAGS with '-x' to tell shell to print all commands run by it.
For example, 'export SHELLFLAGS=-x' on Linux or 'set SHELLFLAGS=-x' on Windows.
PyQt
-----
@ -73,7 +79,7 @@ Mac users
You can use homebrew to install some dependencies:
$ brew install python mpv lame portaudio protobuf npm rustup-init gettext rename
$ brew install python mpv lame portaudio protobuf npm rustup-init gettext rename ripgrep
$ brew link gettext --force

View File

@ -1,25 +1,27 @@
SHELL := /bin/bash
FIND := $(if $(wildcard /bin/find),/bin/find,/usr/bin/find)
ifndef SHELLFLAGS
SHELLFLAGS :=
endif
.SHELLFLAGS := -eu -o pipefail ${SHELLFLAGS} -c
MAKEFLAGS += --warn-undefined-variables
MAKEFLAGS += --no-builtin-rules
RUNARGS :=
MYPY_ARGS :=
FIND := $(if $(wildcard /bin/find),/bin/find,/usr/bin/find)
ifndef OS
OS := unknown
endif
ifndef UNAME
UNAME := unknown
endif
# https://anki.tenderapp.com/discussions/beta-testing/1860-error-unused-type-ignore-comment
ifneq (${OS},Windows_NT)
MYPY_ARGS := --warn-unused-ignores
endif
.SHELLFLAGS := -eu -o pipefail -c
.DELETE_ON_ERROR:
MAKEFLAGS += --warn-undefined-variables
MAKEFLAGS += --no-builtin-rules
RUNARGS :=
.SUFFIXES:
BLACKARGS := -t py36 anki tests setup.py tools/*.py --exclude='_pb2|buildinfo'
ISORTARGS := anki tests setup.py

View File

@ -1,4 +1,13 @@
SHELL := /bin/bash
ifndef SHELLFLAGS
SHELLFLAGS :=
endif
.SHELLFLAGS := -eu -o pipefail ${SHELLFLAGS} -c
MAKEFLAGS += --warn-undefined-variables
MAKEFLAGS += --no-builtin-rules
FIND := $(if $(wildcard /bin/find),/bin/find,/usr/bin/find)
MYPY_ARGS :=
PYLINT_ARGS :=
@ -7,10 +16,6 @@ ifndef OS
OS := unknown
endif
ifndef UNAME
UNAME := unknown
endif
# https://anki.tenderapp.com/discussions/beta-testing/1860-error-unused-type-ignore-comment
ifneq (${OS},Windows_NT)
MYPY_ARGS := --warn-unused-ignores
@ -18,10 +23,7 @@ else
PYLINT_ARGS := --ignored-modules=win32file,pywintypes,socket,win32pipe
endif
.SHELLFLAGS := -eu -o pipefail -c
.DELETE_ON_ERROR:
MAKEFLAGS += --warn-undefined-variables
MAKEFLAGS += --no-builtin-rules
.SUFFIXES:
BLACKARGS := -t py36 aqt tests setup.py tools/*.py --exclude='aqt/forms|buildinfo|colors'

View File

@ -1,5 +1,7 @@
#!/bin/bash
set -eu -o pipefail ${SHELLFLAGS}
echo "Downloading latest translations..."
if [ ! -d repo ]; then

View File

@ -3,6 +3,8 @@
# expects to be run from the ftl folder
#
set -eu -o pipefail ${SHELLFLAGS}
test -d repo || exit 1
rsync -av --delete *.ftl repo/desktop/templates/

View File

@ -2,7 +2,8 @@
#
# build mo files
#
set -eo pipefail
set -eu -o pipefail ${SHELLFLAGS}
targetDir="../aqt_data/locale/gettext"
mkdir -p $targetDir

View File

@ -1,15 +1,14 @@
#!/bin/bash
set -eo pipefail
set -eu -o pipefail ${SHELLFLAGS}
out=../aqt_data/locale/qt
mkdir -p "$out"
qtTranslations="$(python -c "from PyQt5.QtCore import *; import sys; sys.stdout.write(QLibraryInfo.location(QLibraryInfo.TranslationsPath))")"
unameOut="$(uname -s)"
case "${unameOut}" in
CYGWIN*)
case "$(uname -s)" in
CYGWIN*|MINGW*|MSYS*)
qtTranslations="$(cygpath -u "${qtTranslations}")"
;;
esac

View File

@ -1,5 +1,7 @@
#!/bin/bash
set -eu -o pipefail ${SHELLFLAGS}
echo "Downloading latest translations..."
if [ ! -d repo ]; then

View File

@ -2,7 +2,8 @@
#
# update template .pot file from source code strings
#
set -eo pipefail
set -eu -o pipefail ${SHELLFLAGS}
topDir=$(dirname $0)/../../../
cd $topDir

View File

@ -1,6 +1,6 @@
#!/bin/bash
set -eo pipefail
set -eu -o pipefail ${SHELLFLAGS}
scripts/update-po-template
(cd repo && git add desktop; git commit -m update; git push)

View File

@ -4,7 +4,7 @@
# should be on the path.
#
set -eo pipefail
set -eu -o pipefail ${SHELLFLAGS}
if [ ! -d "designer" ]
then

View File

@ -6,14 +6,18 @@
# able to resolve. A solution that doesn't require modifying the python install
# would be welcome!
set -eo pipefail
set -eu -o pipefail ${SHELLFLAGS}
# https://stackoverflow.com/questions/3601515/how-to-check-if-a-variable-is-set-in-bash
if [[ -z "${OS+x}" ]]; then
OS=unknown;
fi
TOOLS="$(cd "`dirname "$0"`"; pwd)"
modDir=$(python -c 'import PyQt5, sys, os; sys.stdout.write(os.path.dirname(sys.modules["PyQt5"].__file__))')
unameOut="$(uname -s)"
case "${unameOut}" in
CYGWIN*)
case "$(uname -s)" in
CYGWIN*|MINGW*|MSYS*)
modDir="$(cygpath -u "${modDir}")"
;;
esac

View File

@ -1,11 +1,16 @@
SHELL := /bin/bash
FIND := $(if $(wildcard /bin/find),/bin/find,/usr/bin/find)
.SHELLFLAGS := -eu -o pipefail -c
.DELETE_ON_ERROR:
ifndef SHELLFLAGS
SHELLFLAGS :=
endif
.SHELLFLAGS := -eu -o pipefail ${SHELLFLAGS} -c
MAKEFLAGS += --warn-undefined-variables
MAKEFLAGS += --no-builtin-rules
FIND := $(if $(wildcard /bin/find),/bin/find,/usr/bin/find)
.DELETE_ON_ERROR:
$(shell mkdir -p .build)
.PHONY: all check fix clean develop

View File

@ -1,5 +1,7 @@
#!/bin/bash
set -eu -o pipefail ${SHELLFLAGS}
echo "Downloading latest translations..."
if [ ! -d repo ]; then

View File

@ -3,6 +3,8 @@
# expects to be run from the ftl folder
#
set -eu -o pipefail ${SHELLFLAGS}
test -d repo || exit 1
rsync -av --delete *.ftl repo/core/templates/

View File

@ -1,4 +1,13 @@
SHELL := /bin/bash
ifndef SHELLFLAGS
SHELLFLAGS :=
endif
.SHELLFLAGS := -eu -o pipefail ${SHELLFLAGS} -c
MAKEFLAGS += --warn-undefined-variables
MAKEFLAGS += --no-builtin-rules
FIND := $(if $(wildcard /bin/find),/bin/find,/usr/bin/find)
ifndef OS
@ -6,20 +15,22 @@ ifndef OS
endif
ifeq (${OS},Windows_NT)
ifndef PYTHON_BIN
PYTHON_BIN := python
ifndef PYTHON_FILE
PYTHON_FILE := $(shell which python)
USE_CYGPATH_COMMAND := case "$$(uname -s)" in CYGWIN*|MINGW*|MSYS*) printf "yes";; esac;
USE_CYGPATH := $(shell ${USE_CYGPATH_COMMAND})
ifneq (,${USE_CYGPATH})
PYTHON_FILE := $(shell cygpath -w "${PYTHON_FILE}")
endif
endif
else
ifndef PYTHON_BIN
PYTHON_BIN := python3
ifndef PYTHON_FILE
PYTHON_FILE := $(shell which python3)
endif
endif
.SHELLFLAGS := -eu -o pipefail -c
.DELETE_ON_ERROR:
MAKEFLAGS += --warn-undefined-variables
MAKEFLAGS += --no-builtin-rules
$(shell mkdir -p .build ../dist)
OUTDIR := ../dist
@ -41,7 +52,7 @@ DEPS := .build/tools .build/vernum ../meta/buildhash \
$(wildcard $(QT_FTL_LOCALES)/*/*.ftl) \
$(shell ${FIND} ../rslib/src -name '*.rs') $(wildcard ../proto/*) \
$(shell ${FIND} ../rslib/ftl -type f) \
$(shell ${FIND} ./src -type f)
$(shell ${FIND} ./src -type f)
.build/develop: $(DEPS)
touch ../proto/backend.proto
@ -50,10 +61,10 @@ DEPS := .build/tools .build/vernum ../meta/buildhash \
touch $@
build: $(DEPS)
rm -rf $(OUTDIR)/ankirspy*
rm -rf "$(OUTDIR)"/ankirspy*
touch ../proto/backend.proto
FTL_TEMPLATE_DIRS="$(QT_FTL_TEMPLATES)" FTL_LOCALE_DIRS="$(QT_FTL_LOCALES)" \
maturin build -i $(shell which ${PYTHON_BIN}) -o $(OUTDIR) $(BUILDFLAGS)
maturin build -i "${PYTHON_FILE}" -o "$(OUTDIR)" $(BUILDFLAGS)
check: .build/check

2
run
View File

@ -1,4 +1,6 @@
#!/bin/bash
set -eu -o pipefail ${SHELLFLAGS}
python --version
make -C $(dirname $0) run RUNFLAGS="$*"