Skip to content
This repository has been archived by the owner on Dec 14, 2023. It is now read-only.

Commit

Permalink
Merge pull request #159 from mozilla/main
Browse files Browse the repository at this point in the history
Merge histories across bergamot-translator forks
  • Loading branch information
abhi-agg authored May 18, 2021
2 parents 10131c7 + 813e81c commit 8b621de
Show file tree
Hide file tree
Showing 5 changed files with 113 additions and 1 deletion.
32 changes: 32 additions & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
version: 2.1
jobs:
build:
docker:
- image: 'emscripten/emsdk:2.0.9'
resource_class: medium

working_directory: ~/checkout

steps:
- checkout

- run:
name: Build WASM
command: bash build-wasm.sh

- run:
name: Check artifacts
working_directory: build-wasm
command: |
ls -all bergamot*
if ls bergamot*.wasm &>/dev/null && ls bergamot*.js &>/dev/null
then
echo "Artifacts Successfully Generated"
else
echo "Failure: Artifacts Not Present"
exit 1
fi
- store_artifacts:
path: "build-wasm"
destination: "build-wasm"
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,6 @@ _deps


wasm/test_page/node_modules
build-*
build-wasm
models
wasm/test_page/bergamot-translator-worker.*
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Bergamot Translator

[![CircleCI badge](https://img.shields.io/circleci/project/github/mozilla/bergamot-translator/main.svg?label=CircleCI)](https://circleci.com/gh/mozilla/bergamot-translator/)

Bergamot translator provides a unified API for ([Marian NMT](https://marian-nmt.github.io/) framework based) neural machine translation functionality in accordance with the [Bergamot](https://browser.mt/) project that focuses on improving client-side machine translation in a web browser.

## Build Instructions
Expand Down
56 changes: 56 additions & 0 deletions build-wasm.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
#!/usr/bin/env bash

# Usage: ./build-wasm.sh

set -e
set -x

# Run script from the context of the script-containing directory
cd "$(dirname $0)"

# This file replicates the instructions found in ./README.md under "Build WASM"
# with slight adjustments to be able to run the build script multiple times without having to clone all dependencies
# as per "As long as you don't update any submodule, just follow steps in `4.ii` to recompile."

# 1. Download and Install Emscripten using following instructions (unless the EMSDK env var is already set)
if [ "$EMSDK" == "" ]; then
EMSDK_UPDATE_REQUIRED=0
if [ ! -d "emsdk" ]; then
git clone https://github.com/emscripten-core/emsdk.git
EMSDK_UPDATE_REQUIRED=1
else
cd emsdk
git fetch
# Only pull if necessary
if [ $(git rev-parse HEAD) != $(git rev-parse @{u}) ]; then
git pull --ff-only
EMSDK_UPDATE_REQUIRED=1
fi
cd -
fi
if [ "$EMSDK_UPDATE_REQUIRED" == "1" ]; then
cd emsdk
./emsdk install latest
./emsdk activate latest
cd -
fi
source ./emsdk/emsdk_env.sh
fi

# 4. Compile
# 1. Create a folder where you want to build all the artifacts (`build-wasm` in this case)
if [ ! -d "build-wasm" ]; then
mkdir build-wasm
fi
cd build-wasm

# 2. Compile the artifacts
emcmake cmake -DCOMPILE_WASM=on ../
emmake make -j3

# 3. Enable SIMD Wormhole via Wasm instantiation API in generated artifacts
bash ../wasm/patch-artifacts-enable-wormhole.sh

# The artifacts (.js and .wasm files) will be available in the build directory ("build-wasm" in this case).

exit 0
22 changes: 22 additions & 0 deletions doc/CI.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Continuous Integration

[Circle CI](https://circleci.com/) is used for continuous integration. Configured via `./.circleci/config.yml`.

## Run Circle CI locally (requires Docker)

1. [Install the CircleCI local cli](https://circleci.com/docs/2.0/local-cli/#installation)
2. Validate Circle CI configuration (useful exercise before pushing any changes to the configuration)

```shell
circleci config validate -c .circleci/config.yml
```

3. To better mimic the starting point for CI, commit your changes and clone your repository into a clean directory then run CircleCI inside that directory:

```shell
git clone . /tmp/$(basename $PWD)
cd /tmp/$(basename $PWD)
circleci build
```

Note: Steps related to caching and uploading/storing artifacts will report as failed locally. This is not necessarily a problem, they are designed to fail since the operations are not supported locally by the CircleCI build agent.

0 comments on commit 8b621de

Please sign in to comment.