mirror of
https://github.com/chatmail/core.git
synced 2026-05-08 17:36:29 +03:00
various cleanups, better parallelism and build-dir structure
This commit is contained in:
@@ -155,13 +155,19 @@ jobs:
|
|||||||
- py-docs
|
- py-docs
|
||||||
- wheelhouse
|
- wheelhouse
|
||||||
|
|
||||||
remote_tests:
|
remote_tests_rust:
|
||||||
|
machine: true
|
||||||
|
steps:
|
||||||
|
- checkout
|
||||||
|
- run: ci_scripts/remote_tests_rust.sh
|
||||||
|
|
||||||
|
remote_tests_python:
|
||||||
machine: true
|
machine: true
|
||||||
steps:
|
steps:
|
||||||
- checkout
|
- checkout
|
||||||
#- attach_workspace:
|
#- attach_workspace:
|
||||||
# at: workspace
|
# at: workspace
|
||||||
- run: ci_scripts/remote_tests.sh
|
- run: ci_scripts/remote_tests_python.sh
|
||||||
# workspace/py-docs workspace/wheelhouse workspace/c-docs
|
# workspace/py-docs workspace/wheelhouse workspace/c-docs
|
||||||
|
|
||||||
upload_docs_wheels:
|
upload_docs_wheels:
|
||||||
@@ -192,7 +198,10 @@ workflows:
|
|||||||
- cargo_fetch
|
- cargo_fetch
|
||||||
# - build_doxygen
|
# - build_doxygen
|
||||||
|
|
||||||
- remote_tests
|
- remote_tests_rust
|
||||||
|
|
||||||
|
- remote_tests_python
|
||||||
|
|
||||||
# - upload_docs_wheels:
|
# - upload_docs_wheels:
|
||||||
# requires:
|
# requires:
|
||||||
# - build_test_docs_wheel
|
# - build_test_docs_wheel
|
||||||
|
|||||||
@@ -1,42 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
export BRANCH=${CIRCLE_BRANCH:?branch to build}
|
|
||||||
GITURL=https://github.com/deltachat/deltachat-core-rust
|
|
||||||
|
|
||||||
ssh -oStrictHostKeyChecking=no ci@b1.delta.chat <<_HERE
|
|
||||||
set -xe
|
|
||||||
mkdir -p $BRANCH
|
|
||||||
cd $BRANCH/
|
|
||||||
echo "--------------------------------------------------"
|
|
||||||
echo " Checkout"
|
|
||||||
echo "--------------------------------------------------"
|
|
||||||
|
|
||||||
if [ -d "deltachat-core-rust" ] ; then
|
|
||||||
cd deltachat-core-rust
|
|
||||||
git fetch origin
|
|
||||||
git clean -q -fd
|
|
||||||
git checkout $BRANCH
|
|
||||||
git reset --hard origin/$BRANCH
|
|
||||||
else
|
|
||||||
git clone $GITURL
|
|
||||||
cd deltachat-core-rust
|
|
||||||
git checkout $BRANCH
|
|
||||||
fi
|
|
||||||
export TARGET=x86_64-unknown-linux-gnu
|
|
||||||
|
|
||||||
echo "--------------------------------------------------"
|
|
||||||
echo " running rust tests"
|
|
||||||
echo "--------------------------------------------------"
|
|
||||||
bash ci_scripts/run-rust-test.sh
|
|
||||||
|
|
||||||
echo "--------------------------------------------------"
|
|
||||||
echo " running python tests"
|
|
||||||
echo "--------------------------------------------------"
|
|
||||||
virtualenv -p python3.7 venv
|
|
||||||
source venv/bin/activate
|
|
||||||
export DCC_PY_LIVECONFIG=$DCC_PY_LIVECONFIG
|
|
||||||
export CARGO_TARGET_DIR=\`pwd\`/target-py
|
|
||||||
|
|
||||||
pip install -q tox virtualenv
|
|
||||||
bash ci_scripts/run-python-test.sh
|
|
||||||
_HERE
|
|
||||||
41
ci_scripts/remote_tests_python.sh
Executable file
41
ci_scripts/remote_tests_python.sh
Executable file
@@ -0,0 +1,41 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
export BRANCH=${CIRCLE_BRANCH:?branch to build}
|
||||||
|
export GITURL=${CIRCLE_REPOSITORY_URL:?git url of core-rust repo}
|
||||||
|
|
||||||
|
export SSHTARGET=ci@b1.delta.chat
|
||||||
|
|
||||||
|
# we construct the BUILDDIR such that we can easily share the
|
||||||
|
# CARGO_TARGET_DIR between runs ("..")
|
||||||
|
export BUILDDIR=ci_builds/$BRANCH/${CIRCLE_JOB:?jobname}/${CIRCLE_BUILD_NUM:?circle-build-number}
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "--- Copying files to $SSHTARGET:$BUILDDIR"
|
||||||
|
|
||||||
|
ssh -oStrictHostKeyChecking=no $SSHTARGET mkdir -p "$BUILDDIR"
|
||||||
|
git ls-tree -r $BRANCH -r --name-only >.rsynclist
|
||||||
|
rsync --files-from=.rsynclist -az ./ "$SSHTARGET:$BUILDDIR"
|
||||||
|
# we seem to need .git for setuptools_scm versioning
|
||||||
|
rsync -az .git "$SSHTARGET:$BUILDDIR"
|
||||||
|
|
||||||
|
echo "--- Running $CIRCLE_JOB remotely"
|
||||||
|
|
||||||
|
ssh $SSHTARGET <<_HERE
|
||||||
|
set +x -e
|
||||||
|
cd $BUILDDIR
|
||||||
|
# let's share the target dir with our last run on this branch/job-type
|
||||||
|
# cargo will make sure to block/unblock us properly
|
||||||
|
export CARGO_TARGET_DIR=\`pwd\`/../target
|
||||||
|
export TARGET=x86_64-unknown-linux-gnu
|
||||||
|
export RUSTC_WRAPPER=sccache
|
||||||
|
export DCC_PY_LIVECONFIG=$DCC_PY_LIVECONFIG
|
||||||
|
|
||||||
|
rm -rf virtualenv venv
|
||||||
|
virtualenv -q -p python3.7 venv
|
||||||
|
source venv/bin/activate
|
||||||
|
set -x
|
||||||
|
|
||||||
|
pip install -q tox virtualenv
|
||||||
|
bash ci_scripts/run-python-test.sh
|
||||||
|
_HERE
|
||||||
33
ci_scripts/remote_tests_rust.sh
Executable file
33
ci_scripts/remote_tests_rust.sh
Executable file
@@ -0,0 +1,33 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
export BRANCH=${CIRCLE_BRANCH:?branch to build}
|
||||||
|
|
||||||
|
export GITURL=${CIRCLE_REPOSITORY_URL:?git url of core-rust repo}
|
||||||
|
|
||||||
|
export SSHTARGET=ci@b1.delta.chat
|
||||||
|
|
||||||
|
# we construct the BUILDDIR such that we can easily share the
|
||||||
|
# CARGO_TARGET_DIR between runs ("..")
|
||||||
|
export BUILDDIR=ci_builds/$BRANCH/${CIRCLE_JOB:?jobname}/${CIRCLE_BUILD_NUM:?circle-build-number}
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "--- Copying files to $SSHTARGET:$BUILDDIR"
|
||||||
|
|
||||||
|
ssh -oStrictHostKeyChecking=no $SSHTARGET mkdir -p "$BUILDDIR"
|
||||||
|
git ls-tree -r $BRANCH -r --name-only >.rsynclist
|
||||||
|
rsync --files-from=.rsynclist -az ./ "$SSHTARGET:$BUILDDIR"
|
||||||
|
|
||||||
|
echo "--- Running $CIRCLE_JOB remotely"
|
||||||
|
|
||||||
|
ssh $SSHTARGET <<_HERE
|
||||||
|
set +x -e
|
||||||
|
cd $BUILDDIR
|
||||||
|
# let's share the target dir with our last run on this branch/job-type
|
||||||
|
# cargo will make sure to block/unblock us properly
|
||||||
|
export CARGO_TARGET_DIR=\`pwd\`/../target
|
||||||
|
export TARGET=x86_64-unknown-linux-gnu
|
||||||
|
export RUSTC_WRAPPER=sccache
|
||||||
|
|
||||||
|
bash ci_scripts/run-rust-test.sh
|
||||||
|
_HERE
|
||||||
|
|
||||||
@@ -1,32 +1,32 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
#
|
#
|
||||||
# Run Python functional test for Delta Chat core.
|
# Run functional tests for Delta Chat core using the python bindings
|
||||||
#
|
# and tox/pytest.
|
||||||
|
|
||||||
set -e -x
|
set -e +x
|
||||||
|
|
||||||
# build the core library
|
# make sure we have proper settings to run Online tests
|
||||||
cargo build --release -p deltachat_ffi --target=$TARGET
|
X=${DCC_PY_LIVECONFIG:?need env var to run Online tests}
|
||||||
|
set -x
|
||||||
|
|
||||||
# Statically link against libdeltachat.a.
|
# for core-building and python install step
|
||||||
export DCC_RS_DEV=$(pwd)
|
export DCC_RS_TARGET=release
|
||||||
|
export DCC_RS_DEV=`pwd`
|
||||||
|
|
||||||
cd python
|
cd python
|
||||||
|
|
||||||
|
python install_python_bindings.py
|
||||||
|
|
||||||
# remove and inhibit writing PYC files
|
# remove and inhibit writing PYC files
|
||||||
rm -rf tests/__pycache__
|
rm -rf tests/__pycache__
|
||||||
rm -rf src/deltachat/__pycache__
|
rm -rf src/deltachat/__pycache__
|
||||||
export PYTHONDONTWRITEBYTECODE=1
|
export PYTHONDONTWRITEBYTECODE=1
|
||||||
|
|
||||||
# make sure we have proper settings to run Online tests
|
|
||||||
X=${DCC_PY_LIVECONFIG:?need env var to run Online tests}
|
|
||||||
|
|
||||||
# run python tests (tox invokes pytest to run tests in python/tests)
|
# run python tests (tox invokes pytest to run tests in python/tests)
|
||||||
# we split out qr-tests run to minimize likelyness of flaky tests
|
# we split out qr-tests run to minimize likelyness of flaky tests
|
||||||
# (some qr tests are pretty heavy in terms of send/received
|
# (some qr tests are pretty heavy in terms of send/received
|
||||||
# messages and async-imap's likely has concurrency problems,
|
# messages and async-imap's likely has concurrency problems,
|
||||||
# eg https://github.com/async-email/async-imap/issues/4 )
|
# eg https://github.com/async-email/async-imap/issues/4 )
|
||||||
tox -e lint,py37 -- --reruns 3 -k "not qr" tests/
|
tox -e lint,py37
|
||||||
tox -e py37 -- --reruns 5 -k "qr" tests/
|
|
||||||
unset DCC_PY_LIVECONFIG
|
unset DCC_PY_LIVECONFIG
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
set -ex
|
set -ex
|
||||||
|
|
||||||
export RUST_TEST_THREADS=1
|
#export RUST_TEST_THREADS=1
|
||||||
export RUST_BACKTRACE=1
|
export RUST_BACKTRACE=1
|
||||||
export RUSTFLAGS='--deny warnings'
|
export RUSTFLAGS='--deny warnings'
|
||||||
export OPT="--target=$TARGET"
|
export OPT="--target=$TARGET"
|
||||||
@@ -38,7 +38,9 @@ else
|
|||||||
export OPT_RELEASE_IGNORED="${OPT_RELEASE} -- --ignored"
|
export OPT_RELEASE_IGNORED="${OPT_RELEASE} -- --ignored"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Run all the test configurations:
|
# Run all the test configurations
|
||||||
|
# RUSTC_WRAPPER=SCCACHE seems to destroy parallelism / prolong the test
|
||||||
|
unset RUSTC_WRAPPER
|
||||||
$CARGO_CMD $CARGO_SUBCMD $OPT
|
$CARGO_CMD $CARGO_SUBCMD $OPT
|
||||||
$CARGO_CMD $CARGO_SUBCMD $OPT_RELEASE
|
$CARGO_CMD $CARGO_SUBCMD $OPT_RELEASE
|
||||||
$CARGO_CMD $CARGO_SUBCMD $OPT_RELEASE_IGNORED
|
$CARGO_CMD $CARGO_SUBCMD $OPT_RELEASE_IGNORED
|
||||||
|
|||||||
@@ -9,11 +9,16 @@ import subprocess
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
os.environ["DCC_RS_TARGET"] = target = "release"
|
target = os.environ.get("DCC_RS_TARGET")
|
||||||
|
if target is None:
|
||||||
|
os.environ["DCC_RS_TARGET"] = target = "release"
|
||||||
if "DCC_RS_DEV" not in os.environ:
|
if "DCC_RS_DEV" not in os.environ:
|
||||||
dn = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
dn = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||||
os.environ["DCC_RS_DEV"] = dn
|
os.environ["DCC_RS_DEV"] = dn
|
||||||
|
|
||||||
|
# build the core library in release + debug mode because
|
||||||
|
# as of Nov 2019 rPGP generates RSA keys which take
|
||||||
|
# prohibitively long for non-release installs
|
||||||
os.environ["RUSTFLAGS"] = "-g"
|
os.environ["RUSTFLAGS"] = "-g"
|
||||||
subprocess.check_call([
|
subprocess.check_call([
|
||||||
"cargo", "build", "-p", "deltachat_ffi", "--" + target
|
"cargo", "build", "-p", "deltachat_ffi", "--" + target
|
||||||
|
|||||||
@@ -29,7 +29,10 @@ def ffibuilder():
|
|||||||
extra_link_args = []
|
extra_link_args = []
|
||||||
else:
|
else:
|
||||||
raise NotImplementedError("Compilation not supported yet on Windows, can you help?")
|
raise NotImplementedError("Compilation not supported yet on Windows, can you help?")
|
||||||
objs = [os.path.join(projdir, 'target', target, 'libdeltachat.a')]
|
target_dir = os.environ.get("CARGO_TARGET_DIR")
|
||||||
|
if target_dir is None:
|
||||||
|
target_dir = os.path.join(projdir, 'target')
|
||||||
|
objs = [os.path.join(target_dir, target, 'libdeltachat.a')]
|
||||||
assert os.path.exists(objs[0]), objs
|
assert os.path.exists(objs[0]), objs
|
||||||
incs = [os.path.join(projdir, 'deltachat-ffi')]
|
incs = [os.path.join(projdir, 'deltachat-ffi')]
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -1,19 +1,22 @@
|
|||||||
[tox]
|
[tox]
|
||||||
# make sure to update environment list in travis.yml and appveyor.yml
|
# make sure to update environment list in travis.yml and appveyor.yml
|
||||||
envlist =
|
envlist =
|
||||||
py35
|
py37
|
||||||
lint
|
lint
|
||||||
auditwheels
|
auditwheels
|
||||||
|
|
||||||
[testenv]
|
[testenv]
|
||||||
commands =
|
commands =
|
||||||
pytest -n6 -v -rsXx {posargs:tests}
|
pytest -n6 -v -rsXx -k "not qr" {posargs:tests}
|
||||||
python tests/package_wheels.py {toxworkdir}/wheelhouse
|
pytest -n6 -v -rsXx -k "qr" {posargs:tests}
|
||||||
|
# python tests/package_wheels.py {toxworkdir}/wheelhouse
|
||||||
passenv =
|
passenv =
|
||||||
TRAVIS
|
TRAVIS
|
||||||
DCC_RS_DEV
|
DCC_RS_DEV
|
||||||
DCC_RS_TARGET
|
DCC_RS_TARGET
|
||||||
DCC_PY_LIVECONFIG
|
DCC_PY_LIVECONFIG
|
||||||
|
CARGO_TARGET_DIR
|
||||||
|
RUSTC_WRAPPER
|
||||||
deps =
|
deps =
|
||||||
pytest
|
pytest
|
||||||
pytest-rerunfailures
|
pytest-rerunfailures
|
||||||
|
|||||||
Reference in New Issue
Block a user