From 301e8d321feccaab4ed86c1fbd18f4d3d3d6afb3 Mon Sep 17 00:00:00 2001 From: Jean-Paul Calderone Date: Tue, 3 Jul 2018 14:52:10 -0400 Subject: [PATCH 01/19] Configure a Slackware job --- .circleci/config.yml | 50 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 17278b047..995778adb 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -13,6 +13,7 @@ workflows: - "centos-7" - "fedora-27" - "fedora-28" + - "slackware-14.2" - "magic-folder-ubuntu-14.04" - "deprecations" @@ -219,6 +220,55 @@ jobs: - image: "fedora" + slackware-14.2: + docker: + - image: "vbatts/slackware:14.2" + + environment: *UTF_8_ENVIRONMENT + + steps: + - run: + node: "Install Git" + command: | + slackpkg update + slackpkg install git + + - "checkout" + + - run: + name: "Bootstrap test environment" + working_directory: "/tmp" + command: | + # Avoid the /nonexistent home directory in nobody's /etc/passwd + # entry. + usermod --home /tmp/nobody nobody + + # Grant read access to nobody, the user which will eventually try + # to test this checkout. + mv /root/project /tmp/project + + # Python build/install toolchain wants to write to the source + # checkout, too. + chown --recursive nobody:nobody /tmp/project + + slackpkg install \ + sudo \ + make automake gcc gcc-c++ \ + python \ + python-devel \ + libffi-devel \ + openssl-devel \ + libyaml-devel \ + python-virtualenv + + - run: *SETUP_VIRTUALENV + - run: *RUN_TESTS + + - store_artifacts: *STORE_TEST_LOG + - store_artifacts: *STORE_OTHER_ARTIFACTS + - run: *SUBMIT_COVERAGE + + magic-folder-ubuntu-14.04: machine: enabled: true From b8e369e85f89dc52323d28d834042809f92bee0b Mon Sep 17 00:00:00 2001 From: Jean-Paul Calderone Date: Tue, 3 Jul 2018 15:21:50 -0400 Subject: [PATCH 02/19] Avoid the Y/n prompt --- .circleci/config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 995778adb..f9f6197e7 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -231,7 +231,7 @@ jobs: node: "Install Git" command: | slackpkg update - slackpkg install git + slackpkg install git Date: Tue, 3 Jul 2018 15:23:48 -0400 Subject: [PATCH 03/19] Also install an ssh client --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index f9f6197e7..c00e73f92 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -231,7 +231,7 @@ jobs: node: "Install Git" command: | slackpkg update - slackpkg install git Date: Tue, 3 Jul 2018 15:36:26 -0400 Subject: [PATCH 04/19] Attempt better slackpkg usage Package matching seems to be by substring. Avoid getting a ton of useless packages by making more precise substrings. Also, there is no distro virtualenv package. Get it another way. --- .circleci/config.yml | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index c00e73f92..34484cf91 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -231,7 +231,7 @@ jobs: node: "Install Git" command: | slackpkg update - slackpkg install openssh git Date: Tue, 3 Jul 2018 15:40:48 -0400 Subject: [PATCH 05/19] add cyrus-sasl, secret curl dependency --- .circleci/config.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 34484cf91..be9bf00ee 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -262,9 +262,12 @@ jobs: openssl-solibs \ libyaml-0.1.6 Date: Tue, 3 Jul 2018 16:05:08 -0400 Subject: [PATCH 06/19] perhaps this is the maintained package? --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index be9bf00ee..c7bb8cad6 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -259,7 +259,7 @@ jobs: gcc-c++-5.5.0 \ python-2.7.15 \ libffi-3.2.1 \ - openssl-solibs \ + openssl-1.0.2k \ libyaml-0.1.6 Date: Tue, 3 Jul 2018 16:10:07 -0400 Subject: [PATCH 07/19] try upgrading the installed package instead --- .circleci/config.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index c7bb8cad6..85714be87 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -259,9 +259,11 @@ jobs: gcc-c++-5.5.0 \ python-2.7.15 \ libffi-3.2.1 \ - openssl-1.0.2k \ libyaml-0.1.6 Date: Wed, 4 Jul 2018 09:07:46 -0400 Subject: [PATCH 08/19] Apparently the upgrade command works differently. It doesn't find anything if we spell out the full package name and version. If we drop the last segment, however... --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 85714be87..015a204e7 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -262,7 +262,7 @@ jobs: libyaml-0.1.6 Date: Wed, 4 Jul 2018 11:19:50 -0400 Subject: [PATCH 09/19] Attempt to get setuptools SSL client working --- .circleci/setup-virtualenv.sh | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.circleci/setup-virtualenv.sh b/.circleci/setup-virtualenv.sh index 690609777..5e8668126 100755 --- a/.circleci/setup-virtualenv.sh +++ b/.circleci/setup-virtualenv.sh @@ -9,6 +9,12 @@ shift || : # Set up the virtualenv as a non-root user so we can run the test suite as a # non-root user. See below. sudo --set-home -u nobody virtualenv --python python2.7 /tmp/tests -sudo --set-home -u nobody /tmp/tests/bin/pip install tox codecov -# Get everything installed in it, too. + +# Slackware has non-working SSL support in setuptools until certifi is +# installed. SSL support in setuptools is needed in case packages use +# `setup_requires` which gets satisfied by setuptools instead of by pip. +# txi2p (vcversioner) is one such package. Twisted (incremental) is another. +sudo --set-home -u nobody /tmp/tests/bin/pip install certifi tox codecov + +# Get everything else installed in it, too. sudo --set-home -u nobody /tmp/tests/bin/tox -c /tmp/project/tox.ini --workdir /tmp --notest -e "${TAHOE_LAFS_TOX_ENVIRONMENT}" ${TAHOE_LAFS_TOX_ARGS} From 78a31960fa689c2cb6629e88c99d424b1899a7d3 Mon Sep 17 00:00:00 2001 From: Jean-Paul Calderone Date: Wed, 4 Jul 2018 11:42:06 -0400 Subject: [PATCH 10/19] make sure we have boring headers like limits.h --- .circleci/config.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 015a204e7..eb4011b54 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -255,6 +255,7 @@ jobs: sudo-1.8.20p2 \ make-4.1 \ automake-1.15 \ + glibc-2.23 \ gcc-5.5.0 \ gcc-c++-5.5.0 \ python-2.7.15 \ From f474789e4060648483cf4b48792c6f8dfd4e73de Mon Sep 17 00:00:00 2001 From: Jean-Paul Calderone Date: Wed, 4 Jul 2018 11:42:16 -0400 Subject: [PATCH 11/19] make sure we have boring build tools like as --- .circleci/config.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index eb4011b54..299913225 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -256,6 +256,7 @@ jobs: make-4.1 \ automake-1.15 \ glibc-2.23 \ + binutils-2.26 \ gcc-5.5.0 \ gcc-c++-5.5.0 \ python-2.7.15 \ From f7e62b7e26bc563a6383d9587310807c4236b6c2 Mon Sep 17 00:00:00 2001 From: Jean-Paul Calderone Date: Wed, 4 Jul 2018 11:44:20 -0400 Subject: [PATCH 12/19] make sure we can build gmpy for twisted --- .circleci/config.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 299913225..9e32298cc 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -261,7 +261,8 @@ jobs: gcc-c++-5.5.0 \ python-2.7.15 \ libffi-3.2.1 \ - libyaml-0.1.6 Date: Wed, 4 Jul 2018 16:01:54 -0400 Subject: [PATCH 13/19] linux/limits.h --- .circleci/config.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 9e32298cc..5a3076968 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -255,6 +255,7 @@ jobs: sudo-1.8.20p2 \ make-4.1 \ automake-1.15 \ + kernel-headers \ glibc-2.23 \ binutils-2.26 \ gcc-5.5.0 \ From 6a0fda7ae54c22aec8ebe583d09ac6d96a4ee077 Mon Sep 17 00:00:00 2001 From: Jean-Paul Calderone Date: Wed, 4 Jul 2018 16:02:01 -0400 Subject: [PATCH 14/19] the real package name --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 5a3076968..463a6ba32 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -259,7 +259,7 @@ jobs: glibc-2.23 \ binutils-2.26 \ gcc-5.5.0 \ - gcc-c++-5.5.0 \ + gcc-g++-5.5.0 \ python-2.7.15 \ libffi-3.2.1 \ libyaml-0.1.6 \ From 531ac8474be5c86a5b182493e98d0338a82005c0 Mon Sep 17 00:00:00 2001 From: Jean-Paul Calderone Date: Wed, 4 Jul 2018 20:14:29 -0400 Subject: [PATCH 15/19] Get certifi to fix the underlying problem Having certifi magically makes setuptools able to talk to PyPI. Whew! --- .circleci/setup-virtualenv.sh | 2 +- tox.ini | 13 +++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/.circleci/setup-virtualenv.sh b/.circleci/setup-virtualenv.sh index 5e8668126..600647672 100755 --- a/.circleci/setup-virtualenv.sh +++ b/.circleci/setup-virtualenv.sh @@ -14,7 +14,7 @@ sudo --set-home -u nobody virtualenv --python python2.7 /tmp/tests # installed. SSL support in setuptools is needed in case packages use # `setup_requires` which gets satisfied by setuptools instead of by pip. # txi2p (vcversioner) is one such package. Twisted (incremental) is another. -sudo --set-home -u nobody /tmp/tests/bin/pip install certifi tox codecov +sudo --set-home -u nobody /tmp/tests/bin/pip install tox codecov # Get everything else installed in it, too. sudo --set-home -u nobody /tmp/tests/bin/tox -c /tmp/project/tox.ini --workdir /tmp --notest -e "${TAHOE_LAFS_TOX_ENVIRONMENT}" ${TAHOE_LAFS_TOX_ARGS} diff --git a/tox.ini b/tox.ini index d27cd0637..25061754a 100644 --- a/tox.ini +++ b/tox.ini @@ -14,12 +14,13 @@ skipsdist = True [testenv] basepython=python2.7 passenv = TAHOE_LAFS_* USERPROFILE HOMEDRIVE HOMEPATH -# Pre-install "incremental" to avoid bug #2913. Basically if Twisted's -# setup_requires=["incremental"] causes this to be installed (with -# setuptools), then it'll fail on travis's OS-X 10.12 machines when PyPI -# disables access with TLS-1.1 or older, so we have to install it ahead of -# time (with pip). -deps = incremental +# Get "certifi" to avoid bug #2913. Basically if a `setup_requires=...` causes +# a package to be installed (with setuptools) then it'll fail on certain +# platforms (travis's OX-X 10.12, Slackware 14.2) because PyPI's TLS +# requirements (TLS >= 1.2) are incompatible with the old TLS clients +# available to those systems. Installing it ahead of time (with pip) avoids +# this problem. +deps = certifi # We add usedevelop=True for speed, and extras=test to get things like "mock" # that are required for our unit tests. usedevelop = True From eb55b6ad3205afe59767bd5f96b6061f1380c9e3 Mon Sep 17 00:00:00 2001 From: Jean-Paul Calderone Date: Wed, 4 Jul 2018 20:46:46 -0400 Subject: [PATCH 16/19] Add a couple more dependencies of sqlite3 --- .circleci/config.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 463a6ba32..698461041 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -263,6 +263,8 @@ jobs: python-2.7.15 \ libffi-3.2.1 \ libyaml-0.1.6 \ + sqlite-3.13.0 \ + icu4c-56.1 \ libmpc-1.0.3 Date: Thu, 5 Jul 2018 08:54:02 -0400 Subject: [PATCH 17/19] Remove the magic-folder "machine" configuration Ubuntu 14.04 is so ooooold. It doesn't like the way we're installing Python packages now. --- .circleci/config.yml | 43 ------------------------------------------- 1 file changed, 43 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 698461041..a41e0a7e9 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -15,7 +15,6 @@ workflows: - "fedora-28" - "slackware-14.2" - - "magic-folder-ubuntu-14.04" - "deprecations" - "c-locale" @@ -286,45 +285,3 @@ jobs: - store_artifacts: *STORE_TEST_LOG - store_artifacts: *STORE_OTHER_ARTIFACTS - run: *SUBMIT_COVERAGE - - - magic-folder-ubuntu-14.04: - machine: - enabled: true - image: "circleci/classic:201711-01" - - environment: - <<: *UTF_8_ENVIRONMENT - EXTRA_PACKAGES: "python-virtualenv" - TAHOE_LAFS_TOX_ARGS: "-- allmydata.test.test_magic_folder" - - # Unfortunately, duplicate all the steps here but run with `sudo`. - steps: - - run: - node: "Install Git" - command: | - sudo apt-get --quiet update - sudo apt-get --quiet --yes install git - - - "checkout" - - - run: - <<: *BOOTSTRAP_TEST_ENVIRONMENT - command: | - sudo ~/project/.circleci/bootstrap-test-environment.sh ~/project "${EXTRA_PACKAGES}" - - - run: - <<: *SETUP_VIRTUALENV - command: | - env - sudo /tmp/project/.circleci/setup-virtualenv.sh "${TAHOE_LAFS_TOX_ENVIRONMENT}" "${TAHOE_LAFS_TOX_ARGS}" - - - run: - <<: *RUN_TESTS - command: | - env - sudo /tmp/project/.circleci/run-tests.sh "${TAHOE_LAFS_TOX_ENVIRONMENT}" "${TAHOE_LAFS_TOX_ARGS}" - - - store_artifacts: *STORE_TEST_LOG - - store_artifacts: *STORE_OTHER_ARTIFACTS - - run: *SUBMIT_COVERAGE From dd9acf25c892249a8b3210d742fcf942d59f5d05 Mon Sep 17 00:00:00 2001 From: Jean-Paul Calderone Date: Thu, 5 Jul 2018 09:03:35 -0400 Subject: [PATCH 18/19] Only run the older if the newer succeeds Spreads the initial builds across different platforms more effectively and avoids potential redundant failing builds on different versions of a single platform. --- .circleci/config.yml | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index a41e0a7e9..c8a038407 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -5,16 +5,28 @@ workflows: version: 2 ci: jobs: - - "lint" - - "debian-8" + # Platforms - "debian-9" - - "ubuntu-16.04" + - "debian-8": + requires: + - "debian-9" + - "ubuntu-18.04" - - "centos-7" - - "fedora-27" + - "ubuntu-16.04": + requires: + - "ubuntu-18.04" + - "fedora-28" + - "fedora-27": + requires: + - "fedora-28" + + - "centos-7" + - "slackware-14.2" + # Other assorted tasks and configurations + - "lint" - "deprecations" - "c-locale" From 52ac1462c90eaafbcfc31a20df1fd160df7dfb73 Mon Sep 17 00:00:00 2001 From: Jean-Paul Calderone Date: Thu, 5 Jul 2018 09:39:50 -0400 Subject: [PATCH 19/19] whitespace --- .circleci/config.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index c8a038407..ab63f2f01 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -131,7 +131,6 @@ jobs: LANG: "C" - deprecations: <<: *DEBIAN docker: