diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 08149029b..5af3c6e81 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -9,92 +9,46 @@ on: - '**' jobs: - build_and_upload: + build_and_upload_wheel: strategy: matrix: - # os: [ubuntu-latest, windows-latest, macos-latest] # python-version: ['3.8', '3.9', '3.10', '3.11', '3.12'] - # architecture: ['x64', 'x86'] - os: [windows-latest] python-version: ['3.10'] - architecture: ['x64', 'x86'] - exclude: - # Exclude macOS and Linux with x86 architecture - - os: macos-latest - architecture: x86 - - os: ubuntu-latest - architecture: x86 - runs-on: ${{ matrix.os }} + runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v3 with: python-version: ${{ matrix.python-version }} - - name: Set up 32-bit Python on Windows - if: matrix.os == 'windows-latest' && matrix.architecture == 'x86' - uses: actions/setup-python@v3 - with: - python-version: ${{ matrix.python-version }} - architecture: 'x86' - - name: Set up Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v3 with: - python-version: '3.10' - - - name: Upgrade pip windows - if: matrix.os == 'windows-latest' - run: | - python -m pip install --upgrade pip setuptools wheel + python-version: ${{ matrix.python-version }} - name: Upgrade pip - if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest' run: | pip install --upgrade pip setuptools wheel - - name: Install Linux dependencies - if: matrix.os == 'ubuntu-latest' + - name: Install swig run: | sudo apt-get update sudo apt-get install libhdf5-serial-dev zlib1g-dev libatlas-base-dev lcov swig3.0 libpcsclite-dev mkdir -p ~/bin/ && ln -s /usr/bin/swig3.0 ~/bin/swig && export PATH=~/bin/:$PATH - - name: Install Windows dependencies - if: matrix.os == 'windows-latest' - run: | - choco install swig - - - name: Install macOS dependencies - if: matrix.os == 'macos-latest' - run: | - brew install swig - - - name: Install dependencies + - name: Install and build TAF run: | pip install .[yubikey] - pip install pyinstaller - pip install twine==3.8.0 - - - name: Build TAF - run: | python setup.py sdist bdist_wheel clean --all - # - name: Convert to anylinux (if Ubuntu latest) - # if: matrix.os == 'ubuntu-latest' - # run: | - # pip install auditwheel - # auditwheel repair dist/*.whl --plat manylinux_2_24_x86_64 - - # - name: Delete Linux-tagged wheel files - # if: matrix.os == 'ubuntu-latest' - # run: | - # rm -f dist/*-linux_*.whl # Remove Linux-tagged .whl files in the dist directory + - name: Install publishing dependencies + run: | + pip install twine==3.8.0 - name: Upload to TestPyPi # if: startsWith(github.ref, 'refs/tags/v') @@ -103,6 +57,8 @@ jobs: env: TWINE_USERNAME: ${{ secrets.TEST_PYPI_USERNAME }} TWINE_PASSWORD: ${{ secrets.TEST_PYPI_PASSWORD }} + + # - name: Upload wheels to PyPI # if: startsWith(github.ref, 'refs/tags/v') # run: | @@ -113,3 +69,93 @@ jobs: # PYPI_USERNAME: ${{ secrets.PYPI_USERNAME }} # PYPI_PASSWORD: ${{ secrets.PYPI_PASSWORD }} # displayName: "Upload wheels" + + +# build-and-test-executables: +# needs: run-tests +# strategy: +# matrix: +# os: [ubuntu-latest, windows-latest, macos-latest] +# runs-on: ${{ matrix.os }} + +# if: ${{ needs.run-tests.result == 'success' }} +# steps: +# - name: Checkout Repository +# uses: actions/checkout@v3 + +# - name: Set up Python +# uses: actions/setup-python@v2 +# with: +# python-version: '3.10' + +# - name: Upgrade pip windows +# if: matrix.os == 'windows-latest' +# run: | +# python -m pip install --upgrade pip setuptools wheel + +# - name: Upgrade pip +# if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest' +# run: | +# pip install --upgrade pip setuptools wheel + +# - name: Install Linux dependencies +# if: matrix.os == 'ubuntu-latest' +# run: | +# sudo apt-get update +# sudo apt-get install libhdf5-serial-dev zlib1g-dev libatlas-base-dev lcov swig3.0 libpcsclite-dev +# mkdir -p ~/bin/ && ln -s /usr/bin/swig3.0 ~/bin/swig && export PATH=~/bin/:$PATH + +# - name: Install Windows dependencies +# if: matrix.os == 'windows-latest' +# run: | +# choco install swig + +# - name: Install macOS dependencies +# if: matrix.os == 'macos-latest' +# run: | +# brew install swig + +# - name: Install dependencies +# run: | +# pip install .[yubikey] +# pip install pyinstaller + +# - name: Build and test standalone executable (Linux) +# if: matrix.os == 'ubuntu-latest' +# run: | +# pyinstaller --onefile --name taf -y taf/tools/cli/taf.py +# chmod +x dist/taf +# ./dist/taf --help | grep "TAF Command Line Interface" || { echo "Error: Expected text not found in the executable output"; exit 1; } + +# - name: Build and test standalone executable (Windows) +# if: matrix.os == 'windows-latest' +# run: | +# pyinstaller --onefile --name taf.exe -y taf/tools/cli/taf.py +# ./dist/taf.exe --help | Select-String "TAF Command Line Interface" -quiet + +# - name: Build and test standalone executable (macOS) +# if: matrix.os == 'macos-latest' +# run: | +# pyinstaller --onefile --name taf -y taf/tools/cli/taf.py +# ./dist/taf --help | grep "TAF Command Line Interface" || { echo "Error: Expected text not found in the executable output"; exit 1; } + +# - name: Upload standalone executable (Linux) +# if: matrix.os == 'ubuntu-latest' +# uses: actions/upload-artifact@v3 +# with: +# name: taf-executable-linux +# path: dist/taf + +# - name: Upload standalone executable (Windows) +# if: matrix.os == 'windows-latest' +# uses: actions/upload-artifact@v3 +# with: +# name: taf-executable-windows +# path: dist/taf.exe + +# - name: Upload standalone executable (macOS) +# if: matrix.os == 'macos-latest' +# uses: actions/upload-artifact@v3 +# with: +# name: taf-executable-macos +# path: dist/taf diff --git a/setup.py b/setup.py index 476717c26..d9ae15f34 100644 --- a/setup.py +++ b/setup.py @@ -15,19 +15,6 @@ packages = find_packages() -# Create platform specific wheel -# https://stackoverflow.com/a/45150383/9669050 -try: - from wheel.bdist_wheel import bdist_wheel as _bdist_wheel - - class bdist_wheel(_bdist_wheel): - def finalize_options(self): - _bdist_wheel.finalize_options(self) - self.root_is_pure = False - -except ImportError: - bdist_wheel = None # type: ignore - ci_require = [ "bandit>=1.6.0", "black>=19.3b0", @@ -65,7 +52,6 @@ def finalize_options(self): "author_email": AUTHOR_EMAIL, "keywords": KEYWORDS, "packages": packages, - "cmdclass": {"bdist_wheel": bdist_wheel}, "include_package_data": True, "data_files": [("lib/site-packages/taf", ["./LICENSE.md", "./README.md"])], "zip_safe": False,