update
This commit is contained in:
93
utils/pynini/Dockerfile
Normal file
93
utils/pynini/Dockerfile
Normal file
@@ -0,0 +1,93 @@
|
||||
# Dockerfile
|
||||
# Pierre-André Noël, May 12th 2020
|
||||
# Copyright © Element AI Inc. All rights reserved.
|
||||
# Apache License, Version 2.0
|
||||
#
|
||||
# This builds `manylinux_2_28_x86_64` Python wheels for `pynini`, wrapping
|
||||
# all its dependencies.
|
||||
#
|
||||
# This Dockerfile uses multi-stage builds; for more information, see:
|
||||
# https://docs.docker.com/develop/develop-images/multistage-build/
|
||||
#
|
||||
# The recommended installation method for Pynini is through Conda-Forge. This gives Linux
|
||||
# x86-64 users another option: installing a precompiled module from PyPI.
|
||||
#
|
||||
#
|
||||
# To build wheels and run Pynini's tests, run:
|
||||
#
|
||||
# docker build --target=run-tests -t build-pynini-wheels .
|
||||
#
|
||||
# To extract the resulting wheels from the Docker image, run:
|
||||
#
|
||||
# docker run --rm -v `pwd`:/io build-pynini-wheels cp -r /wheelhouse /io
|
||||
#
|
||||
# Notice that this also generates Cython wheels.
|
||||
#
|
||||
# Then, `twine` (https://twine.readthedocs.io/en/latest/) can be used to
|
||||
# publish the resulting Pynini wheels.
|
||||
|
||||
# ******************************************************
|
||||
# *** All the following images are based on this one ***
|
||||
# ******************************************************
|
||||
#from quay.io/pypa/manylinux_2_28_x86_64 AS common
|
||||
|
||||
# ***********************************************************************
|
||||
# *** Image providing all the requirements for building Pynini wheels ***
|
||||
# ***********************************************************************
|
||||
FROM harbor.4pd.io/inf/base-python3.8-ubuntu:1.1.0
|
||||
|
||||
# The versions we want in the wheels.
|
||||
ENV FST_VERSION "1.8.3"
|
||||
ENV PYNINI_VERSION "2.1.6"
|
||||
|
||||
# Location of OpenFst and Pynini.
|
||||
ENV FST_DOWNLOAD_PREFIX "https://www.openfst.org/twiki/pub/FST/FstDownload"
|
||||
ENV PYNINI_DOWNLOAD_PREFIX "https://www.opengrm.org/twiki/pub/GRM/PyniniDownload"
|
||||
|
||||
# Note that our certificates are not known to the version of wget available in this image.
|
||||
|
||||
# Gets and unpack OpenFst source.
|
||||
RUN apt update && apt-get install -y wget gcc-9 g++-9 make && ln -s $(which gcc-9) /usr/bin/gcc && ln -s $(which g++-9) /usr/bin/g++
|
||||
RUN cd /tmp \
|
||||
&& wget -q --no-check-certificate "${FST_DOWNLOAD_PREFIX}/openfst-${FST_VERSION}.tar.gz" \
|
||||
&& tar -xzf "openfst-${FST_VERSION}.tar.gz" \
|
||||
&& rm "openfst-${FST_VERSION}.tar.gz"
|
||||
|
||||
# Compiles OpenFst.
|
||||
RUN cd "/tmp/openfst-${FST_VERSION}" \
|
||||
&& ./configure --enable-grm \
|
||||
&& make --jobs 4 install \
|
||||
&& rm -rd "/tmp/openfst-${FST_VERSION}"
|
||||
|
||||
# Gets and unpacks Pynini source.
|
||||
RUN mkdir -p /src && cd /src \
|
||||
&& wget -q --no-check-certificate "${PYNINI_DOWNLOAD_PREFIX}/pynini-${PYNINI_VERSION}.tar.gz" \
|
||||
&& tar -xzf "pynini-${PYNINI_VERSION}.tar.gz" \
|
||||
&& rm "pynini-${PYNINI_VERSION}.tar.gz"
|
||||
|
||||
# Installs requirements in all our Pythons.
|
||||
RUN pip install -i https://nexus.4pd.io/repository/pypi-all/simple -r "/src/pynini-${PYNINI_VERSION}/requirements.txt" || exit;
|
||||
|
||||
|
||||
# **********************************************************
|
||||
# *** Image making pynini wheels (placed in /wheelhouse) ***
|
||||
# **********************************************************
|
||||
#FROM wheel-building-env AS build-wheels
|
||||
|
||||
# Compiles the wheels to a temporary directory.
|
||||
RUN pip wheel -i https://nexus.4pd.io/repository/pypi-all/simple -v "/src/pynini-${PYNINI_VERSION}" -w /tmp/wheelhouse/ || exit;
|
||||
|
||||
RUN wget ftp://ftp.4pd.io/pub/pico/temp/patchelf-0.18.0-x86_64.tar.gz && tar xzf patchelf-0.18.0-x86_64.tar.gz && rm -f patchelf-0.18.0-x86_64.tar.gz
|
||||
RUN pip install -i https://nexus.4pd.io/repository/pypi-all/simple auditwheel
|
||||
# Bundles external shared libraries into the wheels.
|
||||
# See https://github.com/pypa/manylinux/tree/manylinux2014
|
||||
RUN for WHL in /tmp/wheelhouse/pynini*.whl; do \
|
||||
PATH=$(pwd)/bin:$PATH auditwheel repair --plat manylinux_2_31_x86_64 "${WHL}" -w /wheelhouse/ || exit; \
|
||||
done
|
||||
#RUN mkdir -p /wheelhouse && for WHL in /tmp/wheelhouse/pynini*.whl; do \
|
||||
# cp "${WHL}" /wheelhouse/; \
|
||||
#done
|
||||
|
||||
# Removes the non-repaired wheels.
|
||||
RUN rm -rd /tmp/wheelhouse
|
||||
|
||||
Reference in New Issue
Block a user