Helsinki-NLP / Opus-MT

Open neural machine translation models and web services
MIT License
592 stars 71 forks source link

Installation via Docker fails (CMake error: file INSTALL cannot find "/usr/src/app/marian/sentencepiece.pc") #27

Closed GermainZ closed 3 years ago

GermainZ commented 3 years ago

Installation via Docker fails. Output after following the README instructions:

$ docker-compose up
...
[ 97%] Building CXX object src/CMakeFiles/marian_scorer.dir/command/marian_scorer.cpp.o
[ 98%] Linking CXX executable ../marian-server
[ 98%] Built target marian_server
[100%] Linking CXX executable ../marian-scorer
[100%] Built target marian_scorer
Install the project...
-- Install configuration: "Release"
CMake Error at src/3rd_party/sentencepiece/cmake_install.cmake:41 (file):
  file INSTALL cannot find "/usr/src/app/marian/sentencepiece.pc".
Call Stack (most recent call first):
  src/3rd_party/cmake_install.cmake:46 (include)
  src/cmake_install.cmake:42 (include)
  cmake_install.cmake:42 (include)

make: *** [Makefile:108: install] Error 1
ERROR: Service 'opus-mt' failed to build : The command '/bin/sh -c set -eux;    git clone https://github.com/marian-nmt/marian marian;  cd marian;git checkout 1.9.0;   cmake . -DCOMPILE_SERVER=on -DUSE_SENTENCEPIECE=on -DCOMPILE_CPU=on -DCOMPILE_CUDA=off -DUSE_STATIC_LIBS=on;    make -j 2 install;' returned a non-zero code: 2

As a workaround, I did the following:

diff --git a/Dockerfile b/Dockerfile
index f5331c5..34fc2db 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -23,14 +23,16 @@ RUN set -eux; \
        rm -f GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB;

 # Install Marian MT
-RUN set -eux; \
-       git clone https://github.com/marian-nmt/marian marian; \
-       cd marian; \
-       git checkout 1.9.0; \
+RUN set -eux && \
+       git clone https://github.com/marian-nmt/marian marian && \
+       cd marian && \
+       git checkout 1.9.0 && \
+       mkdir build && \
+       cd build && \
        # Choose CPU or GPU(CUDA) from below lines.
        # cmake . -DCOMPILE_SERVER=on -DUSE_SENTENCEPIECE=on -DCOMPILE_CUDA=on -DUSE_STATIC_LIBS=on; \
-       cmake . -DCOMPILE_SERVER=on -DUSE_SENTENCEPIECE=on -DCOMPILE_CPU=on -DCOMPILE_CUDA=off -DUSE_STATIC_LIBS=on; \
-       make -j 2 install;
+       cmake . -DCOMPILE_SERVER=on -DUSE_SENTENCEPIECE=on -DCOMPILE_CPU=on -DCOMPILE_CUDA=off -DUSE_STATIC_LIBS=on .. && \
+       make -j4;

 COPY . .

@@ -40,14 +42,14 @@ RUN set -eux; \
        pip3 install -r requirements.txt

 # install services
-RUN install -m 755 marian/marian /usr/local/bin/; \
-       install -m 755 marian/marian-server /usr/local/bin/; \
-       install -m 755 marian/marian-server /usr/local/bin/; \
-       install -m 755 marian/marian-vocab /usr/local/bin/; \
-       install -m 755 marian/marian-decoder /usr/local/bin/; \
-       install -m 755 marian/marian-scorer /usr/local/bin/; \
-       install -m 755 marian/marian-conv /usr/local/bin/; \
-       install -m 644 marian/libmarian.a  /usr/local/lib/;
+RUN install -m 755 marian/build/marian /usr/local/bin/; \
+       install -m 755 marian/build/marian-server /usr/local/bin/; \
+       install -m 755 marian/build/marian-server /usr/local/bin/; \
+       install -m 755 marian/build/marian-vocab /usr/local/bin/; \
+       install -m 755 marian/build/marian-decoder /usr/local/bin/; \
+       install -m 755 marian/build/marian-scorer /usr/local/bin/; \
+       install -m 755 marian/build/marian-conv /usr/local/bin/; \
+       install -m 644 marian/build/libmarian.a  /usr/local/lib/;

 EXPOSE 80
 CMD python3 server.py -c services.json -p 80
santhoshtr commented 3 years ago

See https://github.com/Helsinki-NLP/Opus-MT/issues/20