Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions config/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,20 @@ ENV PATH="/root/libserenade/gradle-7.4.2/bin:/root/libserenade/jdk-17.0.19+10/bi
ENV PYTHONPATH="/root/serenade/scripts"
ENV SERENADE_SOURCE_ROOT="/root/serenade"
ENV SERENADE_LIBRARY_ROOT="/root/libserenade"

COPY build.gradle settings.gradle ./
COPY buildSrc buildSrc
COPY bin bin
COPY config config
COPY scripts scripts
COPY toolbelt toolbelt
COPY grammarflattener grammarflattener

COPY corpusgen corpusgen
COPY offline offline
COPY replayer replayer
COPY core core
COPY code-engine code-engine
COPY speech-engine speech-engine

RUN gradle core:installDist code-engine:installDist speech-engine:installDist --console=plain
6 changes: 6 additions & 0 deletions docs/building.md
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,12 @@ To run a specific set of services, you can run:

scripts/serenade/bin/run.py --service speech-engine --service code-engine

If you're running services directly on a single machine (not through Docker Compose's network aliases), pass `--env local` so services address each other via `localhost` instead of the bare service-name hostnames (`core`, `code-engine`, `speech-engine`) that only resolve inside Compose's network:

scripts/serenade/bin/run.py --env local --service speech-engine --service code-engine --service core

Without `--env local`, `core` will fail to reach `code-engine`/`speech-engine` with a `ConnectException`, since those hostnames won't resolve.

## Running Tests

To run all of the Serenade tests:
Expand Down
48 changes: 48 additions & 0 deletions patches/marian/tolerate-missing-git.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 27b173d..8637cf9 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -138,21 +138,28 @@ target_compile_options(marian PRIVATE ${ALL_WARNINGS})
# We set MARIAN_GIT_DIR to the appropriate path, depending on whether
# ${CMAKE_CURRENT_SOURCE_DIR}/../.git is a directory or file.
set(MARIAN_GIT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../.git)
-if(NOT IS_DIRECTORY ${MARIAN_GIT_DIR}) # i.e., it's a submodule
- file(READ ${MARIAN_GIT_DIR} MARIAN_GIT_DIR)
- string(REGEX REPLACE "gitdir: (.*)\n" "\\1" MARIAN_GIT_DIR ${MARIAN_GIT_DIR})
- if(NOT IS_ABSOLUTE ${MARIAN_GIT_DIR})
- get_filename_component(MARIAN_GIT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../${MARIAN_GIT_DIR}" ABSOLUTE)
- endif()
-endif(NOT IS_DIRECTORY ${MARIAN_GIT_DIR})
-
-add_custom_command(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/common/git_revision.h
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
- COMMAND git log -1 --pretty=format:\#define\ GIT_REVISION\ \"\%h\ \%ai\" > ${CMAKE_CURRENT_SOURCE_DIR}/common/git_revision.h
- DEPENDS ${MARIAN_GIT_DIR}/logs/HEAD
- VERBATIM
-)
-add_custom_target(marian_version DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/common/git_revision.h)
+if(NOT EXISTS ${MARIAN_GIT_DIR})
+ # .git can be stripped entirely (e.g. by a minimal Docker image build
+ # trimming it to save space), in which case there's no revision to embed.
+ file(WRITE ${CMAKE_CURRENT_SOURCE_DIR}/common/git_revision.h "#define GIT_REVISION \"unknown\"\n")
+ add_custom_target(marian_version)
+else()
+ if(NOT IS_DIRECTORY ${MARIAN_GIT_DIR}) # i.e., it's a submodule
+ file(READ ${MARIAN_GIT_DIR} MARIAN_GIT_DIR)
+ string(REGEX REPLACE "gitdir: (.*)\n" "\\1" MARIAN_GIT_DIR ${MARIAN_GIT_DIR})
+ if(NOT IS_ABSOLUTE ${MARIAN_GIT_DIR})
+ get_filename_component(MARIAN_GIT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../${MARIAN_GIT_DIR}" ABSOLUTE)
+ endif()
+ endif(NOT IS_DIRECTORY ${MARIAN_GIT_DIR})
+
+ add_custom_command(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/common/git_revision.h
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ COMMAND git log -1 --pretty=format:\#define\ GIT_REVISION\ \"\%h\ \%ai\" > ${CMAKE_CURRENT_SOURCE_DIR}/common/git_revision.h
+ DEPENDS ${MARIAN_GIT_DIR}/logs/HEAD
+ VERBATIM
+ )
+ add_custom_target(marian_version DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/common/git_revision.h)
+endif()
add_dependencies(marian marian_version) # marian must depend on it so that it gets created first
# make sure all local dependencies are installed first before this is built
add_dependencies(marian 3rd_party_installs)
1 change: 1 addition & 0 deletions scripts/setup/build-marian.sh
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ git fetch --depth 1 origin 737f43014a939a3ded2806b00cbaa661fbcc5f49
git checkout -q FETCH_HEAD
git apply $SERENADE_SOURCE_ROOT/patches/marian/fix-warnings.patch
git apply $SERENADE_SOURCE_ROOT/patches/marian/max-history.patch
git apply $SERENADE_SOURCE_ROOT/patches/marian/tolerate-missing-git.patch
if [[ `uname` != 'Darwin' && `uname -m` != 'x86_64' ]] ; then
# -m64 is an x86-only flag; this Marian commit predates its own ARM support.
perl -i -pe 's/-m64 //g' CMakeLists.txt
Expand Down
Loading