AMD64
no language set
Git
travis-ci/cpython-builder:.travis.yml@4abd2d5
language: __sardonyx__

stages:
  - build
stage: build

jobs:
  include:
    - language: minimal
      name: rhel8
      os: rhel8

  allow_failures:
    - name: freebsd

env:
  global:
    - VERSION=3.8-dev
  # - ALIAS=nightly

install:
  - pushd /opt/pyenv/
  - sudo git config --global --add safe.directory /opt/pyenv
  - sudo git checkout master
  - sudo git pull
  - popd
  # As of this writing:
  # * Py2 is EOL
  #   * however, pip (https://pip.pypa.io/en/latest/development/release-process/#python-2-support) intends to keep supporting it as long as practical
  #   * Virtualenv also supports old versions (e.g. 3.4) far longer than PSF does
  # * all images have `virtualenv` on PATH but vary in whether it's per-user or global and which Python installation it belongs to
  #   * some of these preinstalled `virtualenv`s don't support 3.9+
  # * selected amd64 images have 3.7.* preinstalled with pip; multiarch have pyenv not on PATH, with no alt versions
  # * xenial's provided Py3, 3.5, is in security fixes mode, due for EOL in 06.2020
  #
  # So it seems to be safe to use `virtualenv` with system's Py2 if we update it, for the foreseeable future.
  # FIXME: use an officially supported alt Python version for `virtualenv` instead once one is available in all images.
  - |
    # `cat` avoids "broken pipe"; `freeze` instead of `list` avoids a warning about future output format change
    if (python -m pip freeze --user | cat | grep -qP '^virtualenv=='); then
      python -m pip install --upgrade --user virtualenv
    elif (python -m pip freeze | cat | grep -qP '^virtualenv=='); then
      sudo python -m pip install --upgrade virtualenv
    else
      sudo python -m pip install virtualenv
    fi

before_script:
  - "export INSTALL_DEST=${INSTALL_DEST:-/opt/python}"
  - 'export LSB_RELEASE=${LSB_RELEASE:-$(lsb_release -rs || if [[ $(uname -a) == *"FreeBSD"* ]]; then echo $(uname -r | rev | cut -c9- | rev); else false; fi || echo ${$(sw_vers -productVersion)%*.*})}'
  - 'export OS_NAME=${OS_NAME:-$((lsb_release -is || if [[ $(uname -a) == *"FreeBSD"* ]]; then echo $(uname | cut -c1-); else false; fi || echo "osx") | tr "A-Z" "a-z")}'
  - "export ARCH=${ARCH:-$(uname -m)}"
  # pipenv is supported for python 2.7 and 3.4 and higher.
  - "export PACKAGES=${PACKAGES:-pip nose pytest mock wheel pipenv dataclasses}"
  - export PYTHON_CONFIGURE_OPTS="--with-wide-unicode --enable-shared --enable-ipv6 --enable-loadable-sqlite-extensions --with-computed-gotos $CONFIGURE_OPTS"
  - sudo chown -R $USER $HOME/.cache
  - |
    if [[ $VERSION = pypy*-dev ]]; then
      if ! [[ -f ~/virtualenv/pypy/bin/activate ]]; then
        curl -O https://s3.amazonaws.com/travis-python-archives/binaries/ubuntu/$(lsb_release -rs)/x86_64/pypy2.7-5.9.0.tar.bz2
        sudo tar xf pypy*.tar.bz2 -C /
      fi
      source ~/virtualenv/pypy/bin/activate
      python --version
    fi

script: ./bin/compile

after_success: ./bin/archive

after_failure: cat /tmp/python-build.*.log

addons:
  apt:
    packages:
      - openssl
      - libssl-dev
      - mercurial
      - python3-pip
  artifacts:
    paths:
      - $LSB_RELEASE/
    target_paths:
      - /binaries/$OS_NAME/$LSB_RELEASE/$ARCH
    branch:
      - default
    cache_control: public
Build Config
{
  "stage": "build",
  "language": "__sardonyx__",
  "os": [
    "linux"
  ],
  "dist": "xenial",
  "stages": [
    {
      "name": "build"
    }
  ],
  "jobs": {
    "include": [
      {
        "language": "shell",
        "name": "rhel8",
        "os": "rhel8"
      }
    ],
    "allow_failures": [
      {
        "name": "freebsd"
      }
    ]
  },
  "env": {
    "global": [
      {
        "VERSION": "3.8-dev"
      }
    ]
  },
  "install": [
    "pushd /opt/pyenv/",
    "sudo git config --global --add safe.directory /opt/pyenv",
    "sudo git checkout master",
    "sudo git pull",
    "popd",
    "# `cat` avoids \"broken pipe\"; `freeze` instead of `list` avoids a warning about future output format change\nif (python -m pip freeze --user | cat | grep -qP '^virtualenv=='); then\n  python -m pip install --upgrade --user virtualenv\nelif (python -m pip freeze | cat | grep -qP '^virtualenv=='); then\n  sudo python -m pip install --upgrade virtualenv\nelse\n  sudo python -m pip install virtualenv\nfi\n"
  ],
  "before_script": [
    "export INSTALL_DEST=${INSTALL_DEST:-/opt/python}",
    "export LSB_RELEASE=${LSB_RELEASE:-$(lsb_release -rs || if [[ $(uname -a) == *\"FreeBSD\"* ]]; then echo $(uname -r | rev | cut -c9- | rev); else false; fi || echo ${$(sw_vers -productVersion)%*.*})}",
    "export OS_NAME=${OS_NAME:-$((lsb_release -is || if [[ $(uname -a) == *\"FreeBSD\"* ]]; then echo $(uname | cut -c1-); else false; fi || echo \"osx\") | tr \"A-Z\" \"a-z\")}",
    "export ARCH=${ARCH:-$(uname -m)}",
    "export PACKAGES=${PACKAGES:-pip nose pytest mock wheel pipenv dataclasses}",
    "export PYTHON_CONFIGURE_OPTS=\"--with-wide-unicode --enable-shared --enable-ipv6 --enable-loadable-sqlite-extensions --with-computed-gotos $CONFIGURE_OPTS\"",
    "sudo chown -R $USER $HOME/.cache",
    "if [[ $VERSION = pypy*-dev ]]; then\n  if ! [[ -f ~/virtualenv/pypy/bin/activate ]]; then\n    curl -O https://s3.amazonaws.com/travis-python-archives/binaries/ubuntu/$(lsb_release -rs)/x86_64/pypy2.7-5.9.0.tar.bz2\n    sudo tar xf pypy*.tar.bz2 -C /\n  fi\n  source ~/virtualenv/pypy/bin/activate\n  python --version\nfi\n"
  ],
  "script": [
    "./bin/compile"
  ],
  "after_success": [
    "./bin/archive"
  ],
  "after_failure": [
    "cat /tmp/python-build.*.log"
  ],
  "addons": {
    "apt": {
      "packages": [
        "openssl",
        "libssl-dev",
        "mercurial",
        "python3-pip"
      ]
    },
    "artifacts": {
      "paths": [
        "$LSB_RELEASE/"
      ],
      "target_paths": [
        "/binaries/$OS_NAME/$LSB_RELEASE/$ARCH"
      ],
      "branch": "default",
      "cache_control": "public"
    }
  }
}