diff --git a/.github/build-wheels.sh b/.github/build-wheels.sh deleted file mode 100755 index 432cc62..0000000 --- a/.github/build-wheels.sh +++ /dev/null @@ -1,63 +0,0 @@ -#!/bin/bash -if [ -n "$DEBUG" ] -then - set -x -fi -set -euo pipefail -# ref: https://coderwall.com/p/fkfaqq/safer-bash-scripts-with-set-euxo-pipefail - -PYTHON_VERSIONS=`ls /opt/python/` - -# Avoid creation of __pycache__/*.py[c|o] -export PYTHONDONTWRITEBYTECODE=1 - -package_name="$1" -if [ -z "$package_name" ] -then - &>2 echo "Please pass package name as a first argument of this script ($0)" - exit 1 -fi - -arch=`uname -m` - -echo -echo -echo "Compile wheels" -for PYTHON in ${PYTHON_VERSIONS}; do - /opt/python/${PYTHON}/bin/pip wheel /io/ -w /io/dist/ -done - -echo -echo -echo "Bundle external shared libraries into the wheels" -for whl in /io/dist/${package_name}-*-linux_${arch}.whl; do - echo "Repairing $whl..." - auditwheel repair "$whl" -w /io/dist/ -done - -echo -echo -echo "Cleanup OS specific wheels" -rm -fv /io/dist/*-linux_*.whl - -echo -echo -echo "Cleanup non-$package_name wheels" -find /io/dist -maxdepth 1 -type f ! -name "$package_name"'-*-manylinux1_*.whl' -print0 | xargs -0 rm -rfv - -echo -echo -echo "Install packages and test" -echo "dist directory:" -ls /io/dist - -for PYTHON in ${PYTHON_VERSIONS}; do - # clear python cache - find /io -type d -name __pycache__ -print0 | xargs -0 rm -rf - - echo - echo -n "Test $PYTHON: " - /opt/python/${PYTHON}/bin/python -c "import platform; print('Building wheel for {platform} platform.'.format(platform=platform.platform()))" - /opt/python/${PYTHON}/bin/pip install "$package_name"[testing,webassets] -f file:///io/dist - /opt/python/${PYTHON}/bin/nosetests -v --with-coverage --cover-package="$package_name" --cover-erase /io/tests -done diff --git a/.github/run-docker.sh b/.github/run-docker.sh deleted file mode 100755 index 785e4cf..0000000 --- a/.github/run-docker.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/bash -package_name="$1" -if [ -z "$package_name" ] -then - &>2 echo "Please pass package name as a first argument of this script ($0)" - exit 1 -fi - -manylinux1_image_prefix="quay.io/pypa/manylinux1_" -dock_ext_args="" -declare -A docker_pull_pids=() # This syntax requires at least bash v4 - -for arch in x86_64 i686 -do - docker pull "${manylinux1_image_prefix}${arch}" & - docker_pull_pids[$arch]=$! -done - -echo Creating dist folder with privileges of host-machine user -mkdir -p dist # This is required to be created with host-machine user privileges - -for arch in x86_64 i686 -do - echo - echo - arch_pull_pid=${docker_pull_pids[$arch]} - echo Waiting for docker pull PID $arch_pull_pid to complete downloading container for $arch arch... - wait $arch_pull_pid # await for docker image for current arch to be pulled from hub - [ $arch == "i686" ] && dock_ext_args="linux32" - - echo Building wheel for $arch arch - docker run --rm -v `pwd`:/io "${manylinux1_image_prefix}${arch}" $dock_ext_args /io/.github/build-wheels.sh "$package_name" - - dock_ext_args="" # Reset docker args, just in case -done diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index fb9a468..0000000 --- a/.travis.yml +++ /dev/null @@ -1,174 +0,0 @@ -conditions: v1 - -os: linux -dist: xenial - -language: python -python: -- 2.7 -- 3.5 -- 3.6 -- 3.7 -- 3.8 -- &mainstream_python 3.9 -- nightly - -install: -- travis_retry pip install -U --upgrade-strategy=eager --pre -e .[testing,webassets] -- travis_retry pip install 'pycparser==2.18' -- travis_retry pip install 'coveralls' - -script: -- pytest -v --cov=dukpy --cov-report=term-missing -- if python -c "import sys; sys.exit(sys.version_info < (2,7))"; then - python setup.py check -rm; - fi -- if python -c "import sys; sys.exit(sys.version_info < (3,6))"; then - python setup.py check -s; - fi - -after_success: -- coveralls - -stages: -- test -- name: deploy - if: tag IS present - -before_cache: -- rm -f $HOME/.cache/pip/log/debug.log - -env: - global: - GIT_INSTALLER_DIR_PATH: ${HOME}/.git-installers - GIT_VERSION: 2.20.1 - PYTHON_INSTALLER_DIR_PATH: ${HOME}/.python-installers - -.mixtures: -- &macos-job - os: osx - osx_image: xcode8.3 - language: generic - cache: - directories: - - $HOME/Library/Caches/Homebrew - - $PYTHON_INSTALLER_DIR_PATH - - $GIT_INSTALLER_DIR_PATH - before_install: &install-from-python_org - - | - function probe_url() { - local py_ver="$1" - [ $(curl -I --write-out '%{http_code}' --silent --output /dev/null "https://www.python.org/ftp/python/${py_ver}/python-${py_ver}-macosx10.9.pkg") == '200' ] && return 0 - return 1 - } - - | - function find_last_macos_py() { - for py_ver in $* - do - >&2 echo Probing $py_ver - probe_url $py_ver && >&2 echo "Found pkg: ${py_ver}" && echo $py_ver && return 0 - done - >&2 echo Failed looking up macOS pkg for $* - return 1 - } - - export GIT_DMG_NAME="git-${GIT_VERSION}-intel-universal-mavericks.dmg" - - export GIT_PKG_NAME="git-${GIT_VERSION}-intel-universal-mavericks.pkg" - - export GIT_DMG_PATH="${GIT_INSTALLER_DIR_PATH}/${GIT_DMG_NAME}" - - > - stat "${GIT_DMG_PATH}" &>/dev/null || wget -O "${GIT_DMG_PATH}" "https://sourceforge.net/projects/git-osx-installer/files/${GIT_DMG_NAME}/download?use_mirror=autoselect" - - stat "${GIT_DMG_PATH}" >/dev/null - - sudo hdiutil attach ${GIT_DMG_PATH} - - hdiutil info - - > - export GIT_INSTALLER_VOLUME=$(hdiutil info | tail -n1 | sed 's#^.*\(/Volumes.*\)#\1#') - - > - export GIT_INSTALLER_PATH="${GIT_INSTALLER_VOLUME}/${GIT_PKG_NAME}" - - ls -alh "${GIT_INSTALLER_VOLUME}" - - sudo installer -verboseR -dumplog -pkg "${GIT_INSTALLER_PATH}" -target / - - sudo hdiutil detach "${GIT_INSTALLER_VOLUME}" - - export PYTHON_VERSION_LONG_SUGGESTIONS=$(git ls-remote --sort -v:refname --tags git://github.com/python/cpython.git "${PYTHON_VERSION}*" "v${PYTHON_VERSION}*" | grep -v '\^{}$' | awk '{print$2}' | sed 's#^refs/tags/##;s#^v##' | grep -v '[abcepr]') - - export PYTHON_VERSION_LONG=$(find_last_macos_py $PYTHON_VERSION_LONG_SUGGESTIONS) - - export PYTHON_VERSION_SHORT=$(echo ${PYTHON_VERSION_LONG} | awk -F. '{print$1"."$2}') - - echo "Selected version vars are:" - - echo "PYTHON_VERSION=${PYTHON_VERSION}" - - echo "PYTHON_VERSION_SHORT=${PYTHON_VERSION_SHORT}" - - echo "PYTHON_VERSION_LONG=${PYTHON_VERSION_LONG}" - - export PYTHON_INSTALL_PATH="/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION_SHORT}" - - export PYTHON_INSTALL_EXE="${PYTHON_INSTALL_PATH}/bin/python${PYTHON_VERSION_SHORT}" - - export PATH="${PYTHON_INSTALL_PATH}/bin:${PATH}" - - export PYTHON_VENV_PATH="${HOME}/virtualenv/python${PYTHON_VERSION_SHORT}" - - export PYTHON_INSTALLER_PATH="${PYTHON_INSTALLER_DIR_PATH}/python-${PYTHON_VERSION_LONG}.pkg" - - echo "PYTHON_INSTALLER_PATH=${PYTHON_INSTALLER_PATH}" - - env - - > - stat "${PYTHON_INSTALLER_PATH}" &>/dev/null || wget -O "${PYTHON_INSTALLER_PATH}" "https://www.python.org/ftp/python/${PYTHON_VERSION_LONG}/python-${PYTHON_VERSION_LONG}-macosx10.9.pkg" - - stat "${PYTHON_INSTALLER_PATH}" >/dev/null - - sudo installer -verboseR -dumplog -pkg "${PYTHON_INSTALLER_PATH}" -target / - - ls "${PYTHON_INSTALL_PATH}/bin" - - ls -lh "${PYTHON_INSTALL_EXE}" - - stat "${PYTHON_INSTALL_EXE}" - - /Applications/Python\ ${PYTHON_VERSION_SHORT}/Install\ Certificates.command || echo "No need to fix certificates" - - if [ "2.7" = "$PYTHON_VERSION" ]; then curl https://bootstrap.pypa.io/pip/2.7/get-pip.py | ${PYTHON_INSTALL_EXE}; else curl https://bootstrap.pypa.io/get-pip.py | ${PYTHON_INSTALL_EXE}; fi - - > - "${PYTHON_INSTALL_EXE}" -m pip install -U pip - - > - "${PYTHON_INSTALL_EXE}" -m pip install -U virtualenv - - > - "${PYTHON_INSTALL_EXE}" -m virtualenv "${PYTHON_VENV_PATH}" - - . "${PYTHON_VENV_PATH}/bin/activate" - - if [ "2.7" = "$PYTHON_VERSION" ]; then curl https://bootstrap.pypa.io/pip/2.7/get-pip.py | python; else curl https://bootstrap.pypa.io/get-pip.py | python; fi - - python --version - - pip --version - -jobs: - fast_finish: true - allow_failures: - - python: nightly - - include: - - <<: *macos-job - name: Running tests against Python 3.8 env under macOS 10.13 - env: - PYTHON_VERSION: 3.8 - - <<: *macos-job - name: Running tests against Python 3.7 env under macOS 10.13 - env: - PYTHON_VERSION: 3.7 - - <<: *macos-job - name: Running tests against Python 2.7 env under macOS 10.13 - env: - PYTHON_VERSION: 2.7 - - <<: *macos-job - name: Running tests against Python 3.6 env under macOS 10.13 - env: - PYTHON_VERSION: 3.6 - - - stage: deploy - python: *mainstream_python - install: skip - services: - - docker - script: - - .github/run-docker.sh "dukpy" - deploy: - provider: pypi - # `skip_cleanup: true` is required to preserve binary wheels, built - # inside of manylinux1 docker container during `script` step above. - skip_cleanup: true - # Although Travis CI instructs `setup.py` to build source distribution, - # which is default value for distribution option (`distribution: sdist`), - # it will also upload all wheels we've previously built in manylinux1 - # docker container using `twine upload -r pypi dist/*` command. - # Also since commit https://github.com/travis-ci/dpl/commit/90b5e39 - # it is default that Travis PYPI provider has `skip_upload_docs: true` - # set by default. - # Besides above, we don't do cleanup of `dist/*`, because it's being done - # by Travis CI PYPI deployment provider after upload, unconditionally. - on: - tags: true - all_branches: true - user: amol - # just source dist, because binary wheels are built within docker - distributions: sdist - password: - secure: g8mh+wysPGF9VaxHsP/FYjjw+CJ8TJpRKRVQIAi7DRy3yn05lsvfwqHBvKMIOZV26JmI8vxiwCPt0IcsBONzRrKuVp0nS0yXLmaaHH2SIOhZaYLknm1eD9AV7T79Z0uWG7ygFXoCCvkJGiOjZkfrakwYVqvIg9tFCvukJaWLHl8= diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index 7994cd2..0000000 --- a/appveyor.yml +++ /dev/null @@ -1,130 +0,0 @@ -environment: - global: - # SDK v7.0 MSVC Express 2008's SetEnv.cmd script will fail if the - # /E:ON and /V:ON options are not enabled in the batch script interpreter - # See: http://stackoverflow.com/a/13751649/163740 - CMD_IN_ENV: "cmd /E:ON /V:ON /C .\\tests\\run_with_env.cmd" - - PYPI_USERNAME: amol - # Use the following web UI to encrypt your password: - # https://ci.appveyor.com/tools/encrypt - PYPI_PASSWORD: - secure: X7AQy+logua8ux61g3Knhg== - - matrix: - - # Pre-installed Python versions, which Appveyor may upgrade to - # a later point release. - # See: http://www.appveyor.com/docs/installed-software#python - - - PYTHON: "C:\\Python27" - PYTHON_VERSION: "2.7.x" # currently 2.7.9 - PYTHON_ARCH: "32" - - - PYTHON: "C:\\Python27-x64" - PYTHON_VERSION: "2.7.x" # currently 2.7.9 - PYTHON_ARCH: "64" - - - PYTHON: "C:\\Python35" - PYTHON_VERSION: "3.5.x" # currently 3.5.3 - PYTHON_ARCH: "32" - - - PYTHON: "C:\\Python35-x64" - PYTHON_VERSION: "3.5.x" # currently 3.5.3 - PYTHON_ARCH: "64" - - - PYTHON: "C:\\Python36" - PYTHON_VERSION: "3.6.x" # currently 3.6.4 - PYTHON_ARCH: "32" - - - PYTHON: "C:\\Python36-x64" - PYTHON_VERSION: "3.6.x" # currently 3.6.4 - PYTHON_ARCH: "64" - - - PYTHON: "C:\\Python37" - PYTHON_VERSION: "3.7.x" # currently 3.7.5 - PYTHON_ARCH: "32" - - - PYTHON: "C:\\Python37-x64" - PYTHON_VERSION: "3.7.x" # currently 3.7.5 - PYTHON_ARCH: "64" - - - PYTHON: "C:\\Python38" - PYTHON_VERSION: "3.8.x" # currently 3.8.0 - PYTHON_ARCH: "32" - - - PYTHON: "C:\\Python38-x64" - PYTHON_VERSION: "3.8.x" # currently 3.8.0 - PYTHON_ARCH: "64" - -install: - # If there is a newer build queued for the same PR, cancel this one. - # The AppVeyor 'rollout builds' option is supposed to serve the same - # purpose but it is problematic because it tends to cancel builds pushed - # directly to master instead of just PR builds (or the converse). - # credits: JuliaLang developers. - - ps: if ($env:APPVEYOR_PULL_REQUEST_NUMBER -and $env:APPVEYOR_BUILD_NUMBER -ne ((Invoke-RestMethod ` - https://ci.appveyor.com/api/projects/$env:APPVEYOR_ACCOUNT_NAME/$env:APPVEYOR_PROJECT_SLUG/history?recordsNumber=50).builds | ` - Where-Object pullRequestId -eq $env:APPVEYOR_PULL_REQUEST_NUMBER)[0].buildNumber) { ` - throw "There are newer queued builds for this pull request, failing early." } - - ECHO "Filesystem root:" - - ps: "ls \"C:/\"" - - - ECHO "Installed SDKs:" - - ps: "ls \"C:/Program Files/Microsoft SDKs/Windows\"" - - # Install Python (from the official .msi of http://python.org) and pip when - # not already installed. - - ps: if (-not(Test-Path($env:PYTHON))) { & appveyor\install.ps1 } - - # Prepend newly installed Python to the PATH of this build (this cannot be - # done from inside the powershell script as it would require to restart - # the parent CMD process). - - "SET PATH=%PYTHON%;%PYTHON%\\Scripts;%PATH%" - - # Check that we have the expected version and architecture for Python - - "python --version" - - "python -c \"import struct; print(struct.calcsize('P') * 8)\"" - - # Upgrade to the latest version of pip to avoid it displaying warnings - # about it being out of date. - # - "pip install --disable-pip-version-check --user --upgrade pip" - - # Install the build dependencies of the project. If some dependencies contain - # compiled extensions and are not provided as pre-built wheel packages, - # pip will build them from source using the MSVC compiler matching the - # target Python version and architecture - - "%CMD_IN_ENV% pip install -e .[testing,webassets]" - -build_script: - # Build the compiled extension - - "%CMD_IN_ENV% python setup.py build" - -test_script: - # Run the project tests - - "%CMD_IN_ENV% pytest -v --cov=dukpy --cov-report=term-missing --cov-report=xml --junitxml=junit-test-results.xml" - -after_test: - # If tests are successful, create binary packages for the project. - - "%CMD_IN_ENV% pip install --upgrade setuptools wheel" - - "%CMD_IN_ENV% python setup.py bdist_wheel" - - ps: "ls dist" - - # This enables AppVeyor UI to list test details: - - ps: | - $wc = New-Object 'System.Net.WebClient' - $wc.UploadFile("https://ci.appveyor.com/api/testresults/junit/$($env:APPVEYOR_JOB_ID)", (Resolve-Path .\junit-test-results.xml)) - -#on_success: - #- "%CMD_IN_ENV% coveralls" - -deploy_script: - - "%CMD_IN_ENV% pip install --upgrade twine" - - ps: >- - if($env:appveyor_repo_tag -eq 'True') { - Invoke-Expression "python -m twine upload dist/* --username $env:PYPI_USERNAME --password $env:PYPI_PASSWORD" - } - -artifacts: - # Archive the generated packages in the ci.appveyor.com build report. - - path: dist\*