Build swig and decoder on manylinux_2_24

This commit is contained in:
Reuben Morais 2021-07-28 17:52:51 +02:00
parent 42ebbf9120
commit c69735e3b6
4 changed files with 27 additions and 21 deletions

View File

@ -71,6 +71,10 @@ jobs:
swig_Linux: swig_Linux:
name: "Lin|Build SWIG" name: "Lin|Build SWIG"
runs-on: ubuntu-20.04 runs-on: ubuntu-20.04
container:
image: quay.io/pypa/manylinux_2_24_x86_64:2021-07-25-cfe8a6c
volumes:
- ${{ github.workspace }}:${{ github.workspace }}
env: env:
swig_hash: "90cdbee6a69d13b39d734083b9f91069533b0d7b" swig_hash: "90cdbee6a69d13b39d734083b9f91069533b0d7b"
steps: steps:
@ -84,10 +88,7 @@ jobs:
id: swig-build-cache id: swig-build-cache
with: with:
path: build-static/ path: build-static/
key: swig-2-${{ runner.os }}-${{ env.swig_hash }} key: swig-4-${{ runner.os }}-${{ env.swig_hash }}
- run: |
sudo apt-get install -y --no-install-recommends autoconf automake bison build-essential
if: steps.swig-build-cache.outputs.cache-hit != 'true'
- run: | - run: |
curl -sSL https://ftp.pcre.org/pub/pcre/pcre-8.43.tar.gz > pcre-8.43.tar.gz curl -sSL https://ftp.pcre.org/pub/pcre/pcre-8.43.tar.gz > pcre-8.43.tar.gz
if: steps.swig-build-cache.outputs.cache-hit != 'true' if: steps.swig-build-cache.outputs.cache-hit != 'true'
@ -114,6 +115,10 @@ jobs:
name: "Lin|Build CTC decoder Python package" name: "Lin|Build CTC decoder Python package"
needs: [ swig_Linux ] needs: [ swig_Linux ]
runs-on: ubuntu-20.04 runs-on: ubuntu-20.04
container:
image: quay.io/pypa/manylinux_2_24_x86_64:2021-07-25-cfe8a6c
volumes:
- ${{ github.workspace }}:${{ github.workspace }}
strategy: strategy:
matrix: matrix:
python-version: [3.6, 3.7, 3.8, 3.9] python-version: [3.6, 3.7, 3.8, 3.9]
@ -121,12 +126,6 @@ jobs:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
with: with:
fetch-depth: 0 fetch-depth: 0
- uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- run: |
python --version
pip --version
- uses: actions/download-artifact@v2 - uses: actions/download-artifact@v2
with: with:
name: "swig_Linux" name: "swig_Linux"
@ -142,17 +141,27 @@ jobs:
pyver: ${{ matrix.python-version }} pyver: ${{ matrix.python-version }}
- name: Make decoder package - name: Make decoder package
run: | run: |
# Setup venv
/opt/_internal/cpython-${{ matrix.python-version }}*/bin/python -m venv /tmp/venv-${{ matrix.python-version }}
source /tmp/venv-${{ matrix.python-version }}/bin/activate
# Check versions
python --version
pip --version
# Build decoder package
NUMPY_BUILD_VERSION="${{ steps.get_numpy.outputs.build_version }}" \ NUMPY_BUILD_VERSION="${{ steps.get_numpy.outputs.build_version }}" \
NUMPY_DEP_VERSION="${{ steps.get_numpy.outputs.dep_version }}" \ NUMPY_DEP_VERSION="${{ steps.get_numpy.outputs.dep_version }}" \
make -C native_client/ctcdecode/ \ make -C native_client/ctcdecode/ \
NUM_PROCESSES=$(nproc) \ NUM_PROCESSES=$(nproc) \
bindings bindings
- name: Auditwheel repair
run: |
auditwheel repair native_client/ctcdecode/dist/*.whl
- uses: actions/upload-artifact@v2 - uses: actions/upload-artifact@v2
with: with:
name: "coqui_stt_ctcdecoder-Linux-${{ matrix.python-version }}.whl" name: "coqui_stt_ctcdecoder-Linux-${{ matrix.python-version }}.whl"
path: ${{ github.workspace }}/native_client/ctcdecode/dist/*.whl path: ${{ github.workspace }}/wheelhouse/*.whl
- run: |
make -C native_client/ctcdecode clean-keep-third-party
train-test-model-Linux: train-test-model-Linux:
name: "Lin|Train a test model" name: "Lin|Train a test model"
needs: [ "build-ctc-decoder-Linux" ] needs: [ "build-ctc-decoder-Linux" ]
@ -175,7 +184,7 @@ jobs:
python --version python --version
pip --version pip --version
- run: | - run: |
pip install --upgrade pip==19.3.1 setuptools==45.0.0 wheel==0.33.6 pip install --upgrade pip setuptools wheel
- run: | - run: |
pip install coqui_stt_ctcdecoder-*-cp36-cp36m-*_x86_64.whl pip install coqui_stt_ctcdecoder-*-cp36-cp36m-*_x86_64.whl
DS_NODECODER=y pip install --upgrade . DS_NODECODER=y pip install --upgrade .

View File

@ -45,14 +45,14 @@ workspace_status.cc:
# Enforce PATH here because swig calls from build_ext looses track of some # Enforce PATH here because swig calls from build_ext looses track of some
# variables over several runs # variables over several runs
bindings: clean-keep-third-party workspace_status.cc $(DS_SWIG_DEP) bindings: clean-keep-third-party workspace_status.cc $(DS_SWIG_DEP)
python -m pip install --quiet $(PYTHON_PACKAGES) wheel==0.33.6 setuptools==45.0.0 python -m pip install --quiet $(PYTHON_PACKAGES) wheel setuptools
DISTUTILS_USE_SDK=1 PATH=$(DS_SWIG_BIN_PATH):$(TOOLCHAIN_DIR):$$PATH SWIG_LIB="$(SWIG_LIB)" AS=$(AS) CC=$(CC) CXX=$(CXX) LD=$(LD) LIBEXE=$(LIBEXE) CFLAGS="$(CFLAGS) $(CXXFLAGS)" LDFLAGS="$(LDFLAGS_NEEDED)" $(PYTHON_PATH) $(NUMPY_INCLUDE) python ./setup.py build_ext --num_processes $(NUM_PROCESSES) $(PYTHON_PLATFORM_NAME) $(SETUP_FLAGS) DISTUTILS_USE_SDK=1 PATH=$(DS_SWIG_BIN_PATH):$(TOOLCHAIN_DIR):$$PATH SWIG_LIB="$(SWIG_LIB)" AS=$(AS) CC=$(CC) CXX=$(CXX) LD=$(LD) LIBEXE=$(LIBEXE) CFLAGS="$(CFLAGS) $(CXXFLAGS)" LDFLAGS="$(LDFLAGS_NEEDED)" $(PYTHON_PATH) $(NUMPY_INCLUDE) python ./setup.py build_ext --num_processes $(NUM_PROCESSES) $(PYTHON_PLATFORM_NAME) $(SETUP_FLAGS)
find temp_build -type f -name "*.o" -delete find temp_build -type f -name "*.o" -delete
DISTUTILS_USE_SDK=1 AS=$(AS) CC=$(CC) CXX=$(CXX) LD=$(LD) LIBEXE=$(LIBEXE) CFLAGS="$(CFLAGS) $(CXXFLAGS)" LDFLAGS="$(LDFLAGS_NEEDED)" $(PYTHON_PATH) $(NUMPY_INCLUDE) python ./setup.py bdist_wheel $(PYTHON_PLATFORM_NAME) $(SETUP_FLAGS) DISTUTILS_USE_SDK=1 AS=$(AS) CC=$(CC) CXX=$(CXX) LD=$(LD) LIBEXE=$(LIBEXE) CFLAGS="$(CFLAGS) $(CXXFLAGS)" LDFLAGS="$(LDFLAGS_NEEDED)" $(PYTHON_PATH) $(NUMPY_INCLUDE) python ./setup.py bdist_wheel $(PYTHON_PLATFORM_NAME) $(SETUP_FLAGS)
rm -rf temp_build rm -rf temp_build
bindings-debug: clean-keep-third-party workspace_status.cc $(DS_SWIG_DEP) bindings-debug: clean-keep-third-party workspace_status.cc $(DS_SWIG_DEP)
python -m pip install --quiet $(PYTHON_PACKAGES) wheel==0.33.6 setuptools==45.0.0 python -m pip install --quiet $(PYTHON_PACKAGES) wheel setuptools
DISTUTILS_USE_SDK=1 PATH=$(DS_SWIG_BIN_PATH):$(TOOLCHAIN_DIR):$$PATH SWIG_LIB="$(SWIG_LIB)" AS=$(AS) CC=$(CC) CXX=$(CXX) LD=$(LD) LIBEXE=$(LIBEXE) CFLAGS="$(CFLAGS) $(CXXFLAGS) -DDEBUG" LDFLAGS="$(LDFLAGS_NEEDED)" $(PYTHON_PATH) $(NUMPY_INCLUDE) python ./setup.py build_ext --debug --num_processes $(NUM_PROCESSES) $(PYTHON_PLATFORM_NAME) $(SETUP_FLAGS) DISTUTILS_USE_SDK=1 PATH=$(DS_SWIG_BIN_PATH):$(TOOLCHAIN_DIR):$$PATH SWIG_LIB="$(SWIG_LIB)" AS=$(AS) CC=$(CC) CXX=$(CXX) LD=$(LD) LIBEXE=$(LIBEXE) CFLAGS="$(CFLAGS) $(CXXFLAGS) -DDEBUG" LDFLAGS="$(LDFLAGS_NEEDED)" $(PYTHON_PATH) $(NUMPY_INCLUDE) python ./setup.py build_ext --debug --num_processes $(NUM_PROCESSES) $(PYTHON_PLATFORM_NAME) $(SETUP_FLAGS)
$(GENERATE_DEBUG_SYMS) $(GENERATE_DEBUG_SYMS)
find temp_build -type f -name "*.o" -delete find temp_build -type f -name "*.o" -delete

View File

@ -50,9 +50,6 @@ else
SOX_LDFLAGS := `pkg-config --libs sox` SOX_LDFLAGS := `pkg-config --libs sox`
endif # OS others endif # OS others
PYTHON_PACKAGES := numpy${NUMPY_BUILD_VERSION} PYTHON_PACKAGES := numpy${NUMPY_BUILD_VERSION}
ifeq ($(OS),Linux)
PYTHON_PLATFORM_NAME ?= --plat-name manylinux1_x86_64
endif
endif endif
ifeq ($(findstring _NT,$(OS)),_NT) ifeq ($(findstring _NT,$(OS)),_NT)
@ -237,7 +234,7 @@ DS_SWIG_ENV := SWIG_LIB="$(SWIG_LIB)" PATH="$(DS_SWIG_BIN_PATH):${PATH}"
$(DS_SWIG_BIN_PATH)/swig: $(DS_SWIG_BIN_PATH)/swig:
mkdir -p $(SWIG_ROOT) mkdir -p $(SWIG_ROOT)
wget -O - "$(SWIG_DIST_URL)" | tar -C $(SWIG_ROOT) -zxf - curl -sSL "$(SWIG_DIST_URL)" | tar -C $(SWIG_ROOT) -zxf -
ln -s $(DS_SWIG_BIN) $(DS_SWIG_BIN_PATH)/$(SWIG_BIN) ln -s $(DS_SWIG_BIN) $(DS_SWIG_BIN_PATH)/$(SWIG_BIN)
ds-swig: $(DS_SWIG_BIN_PATH)/swig ds-swig: $(DS_SWIG_BIN_PATH)/swig

View File

@ -9,7 +9,7 @@ bindings-clean:
# Enforce PATH here because swig calls from build_ext looses track of some # Enforce PATH here because swig calls from build_ext looses track of some
# variables over several runs # variables over several runs
bindings-build: ds-swig bindings-build: ds-swig
pip3 install --quiet $(PYTHON_PACKAGES) wheel==0.33.6 setuptools==45.0.0 pip3 install --quiet $(PYTHON_PACKAGES) wheel setuptools
DISTUTILS_USE_SDK=1 PATH=$(TOOLCHAIN_DIR):$(DS_SWIG_BIN_PATH):$$PATH SWIG_LIB="$(SWIG_LIB)" AS=$(AS) CC=$(CC) CXX=$(CXX) LD=$(LD) CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS_NEEDED) $(RPATH_PYTHON)" MODEL_LDFLAGS="$(LDFLAGS_DIRS)" MODEL_LIBS="$(LIBS)" $(PYTHON_PATH) $(PYTHON_SYSCONFIGDATA) $(NUMPY_INCLUDE) python3 ./setup.py build_ext $(PYTHON_PLATFORM_NAME) DISTUTILS_USE_SDK=1 PATH=$(TOOLCHAIN_DIR):$(DS_SWIG_BIN_PATH):$$PATH SWIG_LIB="$(SWIG_LIB)" AS=$(AS) CC=$(CC) CXX=$(CXX) LD=$(LD) CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS_NEEDED) $(RPATH_PYTHON)" MODEL_LDFLAGS="$(LDFLAGS_DIRS)" MODEL_LIBS="$(LIBS)" $(PYTHON_PATH) $(PYTHON_SYSCONFIGDATA) $(NUMPY_INCLUDE) python3 ./setup.py build_ext $(PYTHON_PLATFORM_NAME)
MANIFEST.in: bindings-build MANIFEST.in: bindings-build