diff --git a/.circleci/Dockerfile.centos b/.circleci/Dockerfile.centos index aeb9eb914..febb61545 100644 --- a/.circleci/Dockerfile.centos +++ b/.circleci/Dockerfile.centos @@ -11,11 +11,11 @@ RUN yum install --assumeyes \ git \ sudo \ make automake gcc gcc-c++ \ - python \ - python-devel \ + python2 \ + python2-devel \ libffi-devel \ openssl-devel \ - libyaml-devel \ + libyaml \ /usr/bin/virtualenv \ net-tools diff --git a/.circleci/config.yml b/.circleci/config.yml index 45e42bca4..41e4ea7fa 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -21,7 +21,7 @@ workflows: requires: - "fedora-29" - - "centos-7" + - "centos-8" - "slackware-14.2" @@ -67,7 +67,7 @@ workflows: - "build-image-ubuntu-18.04" - "build-image-fedora-28" - "build-image-fedora-29" - - "build-image-centos-7" + - "build-image-centos-8" - "build-image-slackware-14.2" - "build-image-pypy-2.7-7.1.1-jessie" @@ -269,9 +269,9 @@ jobs: user: "nobody" - centos-7: &RHEL_DERIV + centos-8: &RHEL_DERIV docker: - - image: "tahoelafsci/centos:7" + - image: "tahoelafsci/centos:8" user: "nobody" environment: *UTF_8_ENVIRONMENT @@ -481,12 +481,12 @@ jobs: TAG: "18.04" - build-image-centos-7: + build-image-centos-8: <<: *BUILD_IMAGE environment: DISTRO: "centos" - TAG: "7" + TAG: "8" build-image-fedora-28: diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 000000000..a59581180 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,170 @@ +name: CI + +on: + push: + pull_request: + +jobs: + + coverage: + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - macos-latest + - windows-latest + python-version: + - 2.7 + + steps: + + # Get vcpython27 on Windows + Python 2.7, to build zfec + # extension. See https://chocolatey.org/packages/vcpython27 and + # https://github.com/crazy-max/ghaction-chocolatey + - name: Install MSVC 9.0 for Python 2.7 [Windows] + if: matrix.os == 'windows-latest' && matrix.python-version == '2.7' + uses: crazy-max/ghaction-chocolatey@v1 + with: + args: install vcpython27 + + - name: Check out Tahoe-LAFS sources + uses: actions/checkout@v2 + + - name: Fetch all history for all tags and branches + run: git fetch --prune --unshallow + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v1 + with: + python-version: ${{ matrix.python-version }} + + - name: Install Python packages + run: | + pip install --upgrade codecov tox setuptools + pip list + + - name: Display tool versions + run: python misc/build_helpers/show-tool-versions.py + + - name: Run "tox -e coverage" + run: tox -e coverage + + - name: Upload eliot.log in case of failure + uses: actions/upload-artifact@v1 + if: failure() + with: + name: eliot.log + path: eliot.log + + - name: Upload coverage report + uses: codecov/codecov-action@v1 + with: + token: abf679b6-e2e6-4b33-b7b5-6cfbd41ee691 + file: coverage.xml + + integration: + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - macos-latest + python-version: + - 2.7 + + steps: + + - name: Install Tor [Ubuntu] + if: matrix.os == 'ubuntu-latest' + run: sudo apt install tor + + - name: Install Tor [macOS] + if: matrix.os == 'macos-latest' + run: brew install tor + + - name: Install Tor [Windows] + if: matrix.os == 'windows-latest' + uses: crazy-max/ghaction-chocolatey@v1 + with: + args: install tor + + - name: Install MSVC 9.0 for Python 2.7 [Windows] + if: matrix.os == 'windows-latest' && matrix.python-version == '2.7' + uses: crazy-max/ghaction-chocolatey@v1 + with: + args: install vcpython27 + + - name: Check out Tahoe-LAFS sources + uses: actions/checkout@v2 + + - name: Fetch all history for all tags and branches + run: git fetch --prune --unshallow + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v1 + with: + python-version: ${{ matrix.python-version }} + + - name: Install Python packages + run: | + pip install --upgrade tox + pip list + + - name: Display tool versions + run: python misc/build_helpers/show-tool-versions.py + + - name: Run "tox -e integration" + run: tox -e integration + + - name: Upload eliot.log in case of failure + uses: actions/upload-artifact@v1 + if: failure() + with: + name: integration.eliot.json + path: integration.eliot.json + + packaging: + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - macos-latest + - windows-latest + - ubuntu-latest + python-version: + - 2.7 + + steps: + + # Get vcpython27 on Windows + Python 2.7, to build zfec + # extension. See https://chocolatey.org/packages/vcpython27 and + # https://github.com/crazy-max/ghaction-chocolatey + - name: Install MSVC 9.0 for Python 2.7 [Windows] + if: matrix.os == 'windows-latest' && matrix.python-version == '2.7' + uses: crazy-max/ghaction-chocolatey@v1 + with: + args: install vcpython27 + + - name: Check out Tahoe-LAFS sources + uses: actions/checkout@v2 + + - name: Fetch all history for all tags and branches + run: git fetch --prune --unshallow + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v1 + with: + python-version: ${{ matrix.python-version }} + + - name: Install Python packages + run: | + pip install --upgrade codecov tox setuptools + pip list + + - name: Display tool versions + run: python misc/build_helpers/show-tool-versions.py + + - name: Run "tox -e pyinstaller" + run: tox -e pyinstaller diff --git a/docs/how_to_make_a_tahoe-lafs_release.org b/docs/how_to_make_a_tahoe-lafs_release.org index 79438c85d..44b9e3dd1 100644 --- a/docs/how_to_make_a_tahoe-lafs_release.org +++ b/docs/how_to_make_a_tahoe-lafs_release.org @@ -17,13 +17,14 @@ people are Release Maintainers: - [ ] all appveyor checks pass - [ ] all buildbot workers pass their checks -* freeze master branch [0/] +* freeze master branch [0/1] - [ ] announced the freeze of the master branch on IRC (i.e. non-release PRs won't be merged until after release) * sync documentation [0/7] - - [ ] NEWS.rst: summarize user-visible changes, aim for one page of text + + - [ ] NEWS.rst: (run "tox -e news") - [ ] added final release name and date to top-most item in NEWS.rst - - [ ] updated relnotes.txt + - [ ] updated relnotes.txt (change next, last versions; summarize NEWS) - [ ] updated CREDITS - [ ] updated docs/known_issues.rst - [ ] docs/INSTALL.rst only points to current tahoe-lafs-X.Y.Z.tar.gz source code file diff --git a/newsfragments/3275.minor b/newsfragments/3275.minor new file mode 100644 index 000000000..dc25bc1a9 --- /dev/null +++ b/newsfragments/3275.minor @@ -0,0 +1 @@ +Updates to release process/docs \ No newline at end of file diff --git a/newsfragments/3277.minor b/newsfragments/3277.minor new file mode 100644 index 000000000..e69de29bb diff --git a/newsfragments/3285.minor b/newsfragments/3285.minor new file mode 100644 index 000000000..e69de29bb diff --git a/newsfragments/3296.installation b/newsfragments/3296.installation new file mode 100644 index 000000000..78cf83f60 --- /dev/null +++ b/newsfragments/3296.installation @@ -0,0 +1 @@ +Tahoe-LAFS now supports CentOS 8 and no longer supports CentOS 7. \ No newline at end of file diff --git a/newsfragments/3297.minor b/newsfragments/3297.minor new file mode 100644 index 000000000..e69de29bb diff --git a/newsfragments/3298.minor b/newsfragments/3298.minor new file mode 100644 index 000000000..e69de29bb diff --git a/nix/eliot.nix b/nix/eliot.nix index 04344ff79..df41b3a61 100644 --- a/nix/eliot.nix +++ b/nix/eliot.nix @@ -17,7 +17,8 @@ buildPythonPackage rec { # Fails intermittently. substituteInPlace eliot/tests/test_validation.py \ - --replace "def test_omitLoggerFromActionType" "def xtest_omitLoggerFromActionType" + --replace "def test_omitLoggerFromActionType" "def xtest_omitLoggerFromActionType" \ + --replace "def test_logCallsDefaultLoggerWrite" "def xtest_logCallsDefaultLoggerWrite" ''; checkInputs = [ testtools pytest hypothesis ]; diff --git a/tox.ini b/tox.ini index 7d869b6bd..3134a0d9f 100644 --- a/tox.ini +++ b/tox.ini @@ -53,7 +53,7 @@ setenv = COVERAGE_PROCESS_START=.coveragerc commands = # NOTE: 'run with "py.test --keep-tempdir -s -v integration/" to debug failures' - py.test --coverage -v integration/ + py.test --coverage -v {posargs:integration} coverage combine coverage report @@ -115,6 +115,37 @@ commands = # put it back mv pyproject.toml towncrier.pyproject.toml +[testenv:news] +passenv = TAHOE_LAFS_* PIP_* SUBUNITREPORTER_* USERPROFILE HOMEDRIVE HOMEPATH +# see comment in [testenv] about "certifi" +whitelist_externals = mv +deps = + certifi + towncrier >= 19.2 +commands = + # With pip >= 10 the existence of pyproject.toml (which we are + # required to have to configure towncrier) triggers a "build + # isolation" mode which prevents anything from working. Avoid + # triggering that pip behavior by keeping the towncrier configuration + # somewhere else and only bringing it in when it's actually needed + # (after pip is done). + # + # Some discussion is available at + # https://github.com/pypa/pip/issues/5696 + # + # towncrier post 19.2 (unreleased as of this writing) adds a --config + # option that can be used instead of this file shuffling. + mv towncrier.pyproject.toml pyproject.toml + + # towncrier 19.2 + works with python2.7 + python -m towncrier --yes + + # put it back + mv pyproject.toml towncrier.pyproject.toml + + # commit the changes + git commit -m "update NEWS.txt for release" + [testenv:deprecations] setenv = PYTHONWARNINGS=default::DeprecationWarning @@ -127,7 +158,6 @@ setenv = deps = # Take the base deps as well! {[testenv]deps} - git+https://github.com/twisted/twisted git+https://github.com/warner/foolscap commands = flogtool --version