diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 2eb8a959..4b019961 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -79,15 +79,15 @@ jobs: run: | sudo apt-get -y install ninja-build - - name: Install lv_font_conv - run: - npm i -g lv_font_conv@1.5.2 - - name: Checkout source files uses: actions/checkout@v3 with: submodules: recursive + - name: Install npm packages + run: + npm i + - name: Get InfiniSim repo run: | git clone https://github.com/InfiniTimeOrg/InfiniSim.git --depth 1 --branch main diff --git a/.gitignore b/.gitignore index 81e49ae0..14ffa7f3 100644 --- a/.gitignore +++ b/.gitignore @@ -50,3 +50,6 @@ src/arm-none-eabi # clangd .cache/ + +# npm +node_modules/ diff --git a/doc/buildAndProgram.md b/doc/buildAndProgram.md index 69e4bfd8..35f9c5d2 100644 --- a/doc/buildAndProgram.md +++ b/doc/buildAndProgram.md @@ -15,10 +15,9 @@ To build this project, you'll need: python -m pip install -r tools/mcuboot/requirements.txt ``` - A reasonably recent version of CMake (I use 3.16.5) -- lv_font_conv, to generate the font .c files - - see [lv_font_conv](https://github.com/lvgl/lv_font_conv#install-the-script) +- lv_font_conv and lv_img_conv, to generate the font .c files - install npm (commonly done via the package manager, ensure node's version is at least 12) - - install lv_font_conv: `npm install lv_font_conv` + - install the modules: `npm install` ## Build steps diff --git a/docker/Dockerfile b/docker/Dockerfile index bb5d5f65..ec9a6ca1 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -49,7 +49,6 @@ RUN apt-get update -qq \ RUN pip3 install adafruit-nrfutil RUN pip3 install -Iv cryptography==3.3 RUN pip3 install cbor -RUN npm i lv_font_conv@1.5.2 -g # build.sh knows how to compile COPY build.sh /opt/ diff --git a/docker/build.sh b/docker/build.sh index 3a467b9f..dbe9145a 100755 --- a/docker/build.sh +++ b/docker/build.sh @@ -33,6 +33,8 @@ main() { [ ! -d "$TOOLS_DIR/$NRF_SDK_VER" ] && GetNrfSdk [ ! -d "$TOOLS_DIR/mcuboot" ] && GetMcuBoot + npm i + mkdir -p "$BUILD_DIR" CmakeGenerate diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..75a67e67 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,118 @@ +{ + "name": "InfiniTime", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "lv_font_conv": "^1.5.2" + } + }, + "node_modules/lv_font_conv": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/lv_font_conv/-/lv_font_conv-1.5.2.tgz", + "integrity": "sha512-0UapRSTkVP/pnB8Z4r2HDHx5p2dJx/xUG1+14u/WXo59mwuC7BahR+Bnx/66jKoDrG1wFQwn9ZzoyMxRHOD9bg==", + "bundleDependencies": [ + "argparse", + "bit-buffer", + "debug", + "make-error", + "mkdirp", + "opentype.js", + "pngjs" + ], + "dependencies": { + "argparse": "^2.0.0", + "bit-buffer": "^0.2.5", + "debug": "^4.1.1", + "make-error": "^1.3.5", + "mkdirp": "^1.0.4", + "opentype.js": "^1.1.0", + "pngjs": "^6.0.0" + }, + "bin": { + "lv_font_conv": "lv_font_conv.js" + } + }, + "node_modules/lv_font_conv/node_modules/argparse": { + "version": "2.0.1", + "inBundle": true, + "license": "Python-2.0" + }, + "node_modules/lv_font_conv/node_modules/bit-buffer": { + "version": "0.2.5", + "inBundle": true, + "license": "MIT" + }, + "node_modules/lv_font_conv/node_modules/debug": { + "version": "4.3.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/lv_font_conv/node_modules/make-error": { + "version": "1.3.6", + "inBundle": true, + "license": "ISC" + }, + "node_modules/lv_font_conv/node_modules/mkdirp": { + "version": "1.0.4", + "inBundle": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lv_font_conv/node_modules/ms": { + "version": "2.1.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/lv_font_conv/node_modules/opentype.js": { + "version": "1.3.3", + "inBundle": true, + "license": "MIT", + "dependencies": { + "string.prototype.codepointat": "^0.2.1", + "tiny-inflate": "^1.0.3" + }, + "bin": { + "ot": "bin/ot" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/lv_font_conv/node_modules/pngjs": { + "version": "6.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/lv_font_conv/node_modules/string.prototype.codepointat": { + "version": "0.2.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/lv_font_conv/node_modules/tiny-inflate": { + "version": "1.0.3", + "inBundle": true, + "license": "MIT" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..d339766c --- /dev/null +++ b/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "lv_font_conv": "^1.5.2" + } +} diff --git a/src/displayapp/fonts/CMakeLists.txt b/src/displayapp/fonts/CMakeLists.txt index 22627efc..99ca8649 100644 --- a/src/displayapp/fonts/CMakeLists.txt +++ b/src/displayapp/fonts/CMakeLists.txt @@ -2,7 +2,8 @@ set(FONTS jetbrains_mono_42 jetbrains_mono_76 jetbrains_mono_bold_20 jetbrains_mono_extrabold_compressed lv_font_sys_48 open_sans_light fontawesome_weathericons) find_program(LV_FONT_CONV "lv_font_conv" NO_CACHE REQUIRED - HINTS "${CMAKE_SOURCE_DIR}/node_modules/.bin") + HINTS "${CMAKE_SOURCE_DIR}/node_modules/.bin" + HINTS "${InfiniTime_DIR}/node_modules/.bin") message(STATUS "Using ${LV_FONT_CONV} to generate font files") configure_file(${CMAKE_CURRENT_LIST_DIR}/jetbrains_mono_bold_20.c_zero.patch ${CMAKE_CURRENT_BINARY_DIR}/jetbrains_mono_bold_20.c_zero.patch COPYONLY) diff --git a/src/resources/CMakeLists.txt b/src/resources/CMakeLists.txt index 3834e854..b61a84ea 100644 --- a/src/resources/CMakeLists.txt +++ b/src/resources/CMakeLists.txt @@ -1,6 +1,7 @@ find_program(LV_FONT_CONV "lv_font_conv" NO_CACHE REQUIRED - HINTS "${CMAKE_SOURCE_DIR}/node_modules/.bin") + HINTS "${CMAKE_SOURCE_DIR}/node_modules/.bin" + HINTS "${InfiniTime_DIR}/node_modules/.bin") message(STATUS "Using ${LV_FONT_CONV} to generate font files") find_program(LV_IMG_CONV "lv_img_conv.py" NO_CACHE REQUIRED