diff --git a/.env.libpointmatcher b/.env.libpointmatcher
new file mode 100644
index 00000000..966b613b
--- /dev/null
+++ b/.env.libpointmatcher
@@ -0,0 +1,35 @@
+# =================================================================================================
+#
+# Set project related environment variables. Those are available for convenience
+# and are also required by 'norlab-shell-script-tools' library.
+#
+# Usage:
+#
+# Important! Source this file from 'libpointmatcher' repository root
+# $ cd
+# $ set -o allexport && source .env.libpointmatcher && set +o allexport
+#
+# =================================================================================================
+
+PROJECT_PROMPT_NAME='LPM'
+
+# ....Programaticaly fetch source code information.................................................
+PROJECT_GIT_REMOTE_URL="https://github.com/norlab-ulaval/libpointmatcher"
+PROJECT_GIT_NAME=$( basename "${PROJECT_GIT_REMOTE_URL}" .git )
+PROJECT_PATH=$( git rev-parse --show-toplevel )
+PROJECT_SRC_NAME="$( basename ${PROJECT_PATH} )"
+
+# ....Set LPM related environment variable with their own prefix...................................
+# Note: Those with "PROJECT_" prefix will get eventualy overiden in the case where N2ST is used
+# as a library. Using generic testing logic require that environment variables with
+# "PROJECT_" prefix be available.
+LPM_PROMPT_NAME="${PROJECT_PROMPT_NAME"
+LPM_GIT_REMOTE_URL="${PROJECT_GIT_REMOTE_URL}"
+LPM_GIT_NAME="${PROJECT_GIT_NAME}"
+LPM_PATH="${PROJECT_PATH}"
+LPM_SRC_NAME="${PROJECT_SRC_NAME}"
+
+# ....Set dependencies path........................................................................
+LPM_BUILD_SYSTEM_PATH="${PROJECT_PATH}/build_system"
+N2ST_PATH="${PROJECT_PATH}/build_system/utilities/norlab-shell-script-tools"
+NBS_PATH="${PROJECT_PATH}/build_system/utilities/norlab-build-system"
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 07f6752e..9ead055a 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -1,13 +1,29 @@
+# =================================================================================================
# Files or directories with designated code owner.
-# Branch with "Require review from Code Owners" will automaticaly trigger a request to a designated code owner
+#
+# Note:
+# - Each line is a file pattern followed by one or more owners.
+# - Branch with branch protection rule "Require review from Code Owners"
+# will automaticaly trigger a request to a designated code owner
+# =================================================================================================
-# DevOps related
-/build_system/ @RedLeader962
-/.github/ @RedLeader962
-/.dockerignore @RedLeader962
-/.gitignore @RedLeader962
+# ....Repository wide code owner...................................................................
+# These owners will be the default owners for everything in the repo.
+* @pomerlef
-# Core
+# ....Core directories and files...................................................................
+/README.md @pomerlef
+/LICENSE @pomerlef
/pointmatcher @boxanm @simonpierredeschenes @aguenette
/python @boxanm @simonpierredeschenes @aguenette
/utest @boxanm @simonpierredeschenes @aguenette
+/.env.libpointmatcher @RedLeader962
+
+# ....DevOps related...............................................................................
+/.github/ @RedLeader962
+/build_system/ @RedLeader962
+/build_system/utilities @RedLeader962
+/.gitmodules @RedLeader962
+/.gitignore @RedLeader962
+/.dockerignore @RedLeader962
+
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
new file mode 100644
index 00000000..7b846bfa
--- /dev/null
+++ b/.github/pull_request_template.md
@@ -0,0 +1,47 @@
+# Description
+### Summary:
+
+
+
+
+
+
+### Changes and type of changes:
+
+-
+-
+-
+
+
+---
+
+# Checklist:
+
+### Code related
+- [ ] I have made corresponding changes to the documentation (i.e.: function, class, script header,
+ README.md)
+- [ ] I have commented hard-to-understand code
+- [ ] I have added tests that prove my fix is effective or that my feature works
+- [ ] All tests pass locally with my changes (Check [README.md #Contributing](https://github.com/norlab-ulaval/libpointmatcher/tree/release#contributing) for local testing procedure using _libpointmatcher-build-system_)
+
+### PR creation related
+- [ ] My pull request `base ref` branch is set to the `develop` branch (the _build-system_ won't be triggered otherwise)
+- [ ] My pull request branch is up-to-date with the `develop` branch (the _build-system_ will reject it otherwise)
+
+### PR description related
+- [ ] I have included a quick summary of the changes
+- [ ] I have included a high-level list of changes and their corresponding type
+ - Types: `feat` `fix` `docs` `style` `refactor` `perf` `test` `build` `ci` `chore` `revert`
+ - Breaking changes: `!`
+ - Reference:
+ - See [commit_msg_reference.md](https://github.com/norlab-ulaval/libpointmatcher/blob/release/commit_msg_reference.md) in the repository root for details
+ - https://www.conventionalcommits.org
+- [ ] I have indicated the related issue's id with `# ` if changes are of type `fix`
+
+ ## Note for repository admins
+ ### Release PR related
+- Only repository admins have the privilege to `push/merge` on the default branch (ie: `master`) and the `release` branch.
+- Keep PR in `draft` mode until all the release reviewers are ready to push the release.
+- Once a PR from `release` -> `master` branch is created (not in draft mode),
+ - it triggers the _build-system_ test
+ - (in-progress) and it triggers the _semantic release automation_
diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index f9d19042..f19ecbd2 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -2,7 +2,7 @@
Changelog for package libpointmatcher
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-2.0.0 (2023-12-15)
+1.4.0 (2023-12-15)
-----------------
* fix: N2ST path resolution in dependencies-doc docker image
* refactor: move libpointmatcher build-system logic to norlab-build-system submodule
diff --git a/LICENSE b/LICENSE
index e9f13856..9703c25e 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
BSD 3-Clause License
-Copyright (c) 2010-2021, the libpointmatcher authors
+Copyright (c) 2010-2023, the libpointmatcher authors
All rights reserved.
Redistribution and use in source and binary forms, with or without
diff --git a/README.md b/README.md
index 3c3cf3a5..f0c31558 100644
--- a/README.md
+++ b/README.md
@@ -3,9 +3,37 @@
---
-`libpointmatcher` is currently tested on our build system with the following architecture and OS
+
+
+`libpointmatcher` is tested on our build system under the following architecture and OS:
- x86 and arm64/v8
-- Ubuntu bionic (18.04) and focal (20.04)
+- Ubuntu bionic (18.04) and focal (20.04)
+
+Note:
+- support for Ubuntu jammy (22.04) comming soon
+- `libpointmatcher` reportedly works on MacOs OsX (latest) and Windows (latest)
+
+
+
+
+
+
+
+
+
+
+### ★ Version `1.4.0` release note (important)
+This release of _libpointmatcher_ introduces the integration of [norlab-build-system (NBS)](https://github.com/norlab-ulaval/norlab-build-system) as a _git submodule_ for codebase development and testing.
+
+Execute the following to clone the repository with its submodule:
+```shell
+git clone --recurse-submodules https://github.com/norlab-ulaval/libpointmatcher.git
+```
+If _libpointmatcher_ was previously cloned, execute the following to fetch its new submodule
+```shell
+git submodule update --remote --recursive --init
+```
+
# Documentation and Tutorials
@@ -23,17 +51,10 @@ It is now maintained by the Northern Robotics Laboratory ([Norlab](https://norla
You can read the latest changes in the [release notes](doc/ReleaseNotes.md).
-# Quick Start
-
-Clone the repository with its submodule
-```shell
-git clone --recurse-submodules https://github.com/norlab-ulaval/libpointmatcher.git
-# If libpointmatcher is already cloned, fetch its new submodule
-git submodule update --remote --recursive --init
-```
+# Quick Start
Although we suggest to use the [tutorials](doc/index.md), here is a quick version of it:
The library has a light dependency list:
@@ -95,18 +116,22 @@ described [here](doc/ICPIntro.md) in more detail.
Please use our [github's issue tracker](http://github.com/ethz-asl/libpointmatcher/issues) to report bugs. If you are running the library on Ubuntu, copy-paste the output of the script [listVersionsUbuntu.sh](https://github.com/norlab-ulaval/libpointmatcher/blob/master/utest/listVersionsUbuntu.sh) to simplify the search of an answer.
-## Codebase
+## Codebase development
+
+Libpointmatcher codebase now integrate [norlab-build-system (NBS)](https://github.com/norlab-ulaval/norlab-build-system) and [norlab-shell-script-tools (N2ST)](https://github.com/norlab-ulaval/norlab-shell-script-tools).
+`NBS` is a build-infrastructure-agnostic build system custom-made to meet our needs in robotic software engineering at NorLab and `N2ST` is a library of shell script functions as well as a shell testing tools leveraging _**bats-core**_ and _**docker**_ .
+`N2ST` purpose is to speed up shell script development and improve reliability.
-Libpointmatcher codebase now integrate [norlab-build-system (NBS)](https://github.com/norlab-ulaval/norlab-build-system) and [norlab-shell-script-tools (N2ST)](https://github.com/norlab-ulaval/norlab-shell-script-tools). `NBS` is a build-infrastructure-agnostic build system custom-made for our need at NorLab and `N2ST` is library of shell script, function for shell script development and a shell testing tools leveraging `bats-core`.
+`NBS` is deployed on our [TeamCity](https://www.jetbrains.com/teamcity/) continuous integration/deployment server and oversees protected branches of the [libpointmatcher](https://github.com/norlab-ulaval/libpointmatcher) GitHub repository:
-NBS is deployed on our [TeamCity](https://www.jetbrains.com/teamcity/) continuous integration/deployment server and oversees both protected branch of the [libpointmatcher](https://github.com/norlab-ulaval/libpointmatcher) GitHub repository: the `master` branch and the `develop` branch.
+- The `develop` branch can only be merged through a pull-request from any `` branches. Any contributor can submit a pull request to the `develop` branch;
+- the `release` branch is a revision and preparation branch where we can freeze the codebase in a given state without stalling to `develop` branch progression;
+- The `master` branch can only be merged through a pull-request from the `release` branch. Only repository admin can submit a PR to the `master` branch.
-- The `develop` branch can only be merged through a pull-request from any `` branchs. Any contributor can submit a pull request to the `develop` branch;
-- The `master` branch can only be merged from the `release` branch through a pull-request by a repository admin.
-In both cases submiting a pull request will trigger a build configuration on our build system and the pull request will be granted if the build/test run succeede.
+In any cases, submitting a pull request to `develop` or `master` will trigger a build/test configuration on our build system and the pull request will be granted if the build/test run succeed.
**Current build matrix:**
-`[latest] x [x86, arm64] x [ubuntu] x [bionic, focal, jammy] x [Release, RelWithDebInfo, MinSizeRel]`
+`[latest] x [x86, arm64] x [ubuntu] x [bionic, focal] x [Release, RelWithDebInfo, MinSizeRel]`
### Development workflow
@@ -133,16 +158,19 @@ bash lpm_create_multiarch_docker_builder.bash
```shell
cd /build_system
-# Run the build matrix as specified in ".env.build_matrix.libpointmatcher" on native architecture using "ci_PR" service
+# Run the build matrix as specified in ".env.build_matrix.libpointmatcher"
+# on native architecture using "ci_PR" service
bash lpm_crawl_libpointmatcher_build_matrix.bash --fail-fast -- build ci_PR
-# Run a specific case using build flags with multi-architecture virtualization using "ci_PR_amd64" and "ci_PR_arm64v8" services
-bash lpm_crawl_libpointmatcher_build_matrix.bash --repository-version-build-matrix-override latest \
- --os-name-build-matrix-override ubuntu \
- --cmake-build-type-build-matrix-override RelWithDebInfo \
- --ubuntu-version-build-matrix-override focal \
- --fail-fast \
- -- build ci_PR_amd64 ci_PR_arm64v8
+# Run a specific case using build flags with multi-architecture
+# virtualization using "ci_PR_amd64" and "ci_PR_arm64v8" services
+bash lpm_crawl_libpointmatcher_build_matrix.bash \
+ --repository-version-build-matrix-override latest \
+ --os-name-build-matrix-override ubuntu \
+ --cmake-build-type-build-matrix-override RelWithDebInfo \
+ --ubuntu-version-build-matrix-override focal \
+ --fail-fast \
+ -- build ci_PR_amd64 ci_PR_arm64v8
# Read the help for details
bash lpm_crawl_libpointmatcher_build_matrix.bash --help
diff --git "a/build_system/.jetbrains_run_config/(HELP) bash lpm_execute_compose._ \342\200\272 --help menu.run.xml" "b/build_system/.jetbrains_run_config/(HELP) bash lpm_execute_compose._ \342\200\272 --help menu.run.xml"
index 299b0879..e955512d 100644
--- "a/build_system/.jetbrains_run_config/(HELP) bash lpm_execute_compose._ \342\200\272 --help menu.run.xml"
+++ "b/build_system/.jetbrains_run_config/(HELP) bash lpm_execute_compose._ \342\200\272 --help menu.run.xml"
@@ -1,6 +1,6 @@
-
-
+
+
diff --git a/build_system/.jetbrains_run_config/(command version) docker build & run IamBuildSystemTester.run.xml b/build_system/.jetbrains_run_config/(command version) docker build & run IamBuildSystemTester.run.xml
deleted file mode 100644
index 45695bb6..00000000
--- a/build_system/.jetbrains_run_config/(command version) docker build & run IamBuildSystemTester.run.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git "a/build_system/.jetbrains_run_config/(test) lpm_execute_compose_over_build_matrix.bash \342\200\272 build --dry-run.run.xml" "b/build_system/.jetbrains_run_config/(test) lpm_execute_compose_over_build_matrix.bash \342\200\272 build --dry-run.run.xml"
deleted file mode 100644
index 50d84640..00000000
--- "a/build_system/.jetbrains_run_config/(test) lpm_execute_compose_over_build_matrix.bash \342\200\272 build --dry-run.run.xml"
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git "a/build_system/.jetbrains_run_config/bash lpm_execute_compose_over_build_matrix.bash \342\200\272 build _service_ _popup_.run.xml" "b/build_system/.jetbrains_run_config/bash lpm_execute_compose_over_build_matrix.bash \342\200\272 build _service_ _popup_.run.xml"
index ea3440c0..35bfd93e 100644
--- "a/build_system/.jetbrains_run_config/bash lpm_execute_compose_over_build_matrix.bash \342\200\272 build _service_ _popup_.run.xml"
+++ "b/build_system/.jetbrains_run_config/bash lpm_execute_compose_over_build_matrix.bash \342\200\272 build _service_ _popup_.run.xml"
@@ -1,5 +1,5 @@
-
+
diff --git "a/build_system/.jetbrains_run_config/bash lpm_execute_compose_over_build_matrix.bash \342\200\272 build dependencies_arm64v8 ci_PR_arm64v8 _popup_.run.xml" "b/build_system/.jetbrains_run_config/bash lpm_execute_compose_over_build_matrix.bash \342\200\272 build dependencies_arm64v8 ci_PR_arm64v8 _popup_.run.xml"
index 032fe2e1..fd730d73 100644
--- "a/build_system/.jetbrains_run_config/bash lpm_execute_compose_over_build_matrix.bash \342\200\272 build dependencies_arm64v8 ci_PR_arm64v8 _popup_.run.xml"
+++ "b/build_system/.jetbrains_run_config/bash lpm_execute_compose_over_build_matrix.bash \342\200\272 build dependencies_arm64v8 ci_PR_arm64v8 _popup_.run.xml"
@@ -1,5 +1,5 @@
-
+
diff --git "a/build_system/.jetbrains_run_config/bash lpm_execute_compose_over_build_matrix.bash \342\200\272 build dependencies-general dependencies (BUILD MATRIX SUBSET).run.xml" "b/build_system/.jetbrains_run_config/bash lpm_execute_compose_over_build_matrix.bash \342\200\272 build dependencies-general dependencies (BUILD MATRIX SUBSET).run.xml"
index 76666760..3caec4cd 100644
--- "a/build_system/.jetbrains_run_config/bash lpm_execute_compose_over_build_matrix.bash \342\200\272 build dependencies-general dependencies (BUILD MATRIX SUBSET).run.xml"
+++ "b/build_system/.jetbrains_run_config/bash lpm_execute_compose_over_build_matrix.bash \342\200\272 build dependencies-general dependencies (BUILD MATRIX SUBSET).run.xml"
@@ -1,5 +1,5 @@
-
+
diff --git "a/build_system/.jetbrains_run_config/bash lpm_execute_compose_over_build_matrix.bash \342\200\272 build test_compilation__ (Release).run.xml" "b/build_system/.jetbrains_run_config/bash lpm_execute_compose_over_build_matrix.bash \342\200\272 build test_compilation__ (Release).run.xml"
index 41c73e0e..68949630 100644
--- "a/build_system/.jetbrains_run_config/bash lpm_execute_compose_over_build_matrix.bash \342\200\272 build test_compilation__ (Release).run.xml"
+++ "b/build_system/.jetbrains_run_config/bash lpm_execute_compose_over_build_matrix.bash \342\200\272 build test_compilation__ (Release).run.xml"
@@ -1,5 +1,5 @@
-
+
diff --git "a/build_system/.jetbrains_run_config/bash lpm_execute_compose_over_build_matrix.bash \342\200\272 build test_compilation_prefixed_path (BUILD MATRIX SUBSET).run.xml" "b/build_system/.jetbrains_run_config/bash lpm_execute_compose_over_build_matrix.bash \342\200\272 build test_compilation_prefixed_path (BUILD MATRIX SUBSET).run.xml"
index a2b5e2b7..cc0fb90f 100644
--- "a/build_system/.jetbrains_run_config/bash lpm_execute_compose_over_build_matrix.bash \342\200\272 build test_compilation_prefixed_path (BUILD MATRIX SUBSET).run.xml"
+++ "b/build_system/.jetbrains_run_config/bash lpm_execute_compose_over_build_matrix.bash \342\200\272 build test_compilation_prefixed_path (BUILD MATRIX SUBSET).run.xml"
@@ -1,5 +1,5 @@
-
+
diff --git "a/build_system/.jetbrains_run_config/bash lpm_execute_compose_over_build_matrix.bash \342\200\272 build&push dependencies-general dependencies (AS IN TC).run.xml" "b/build_system/.jetbrains_run_config/bash lpm_execute_compose_over_build_matrix.bash \342\200\272 build&push dependencies-general dependencies (AS IN TC).run.xml"
index 11a3b3b4..bf5e3c73 100644
--- "a/build_system/.jetbrains_run_config/bash lpm_execute_compose_over_build_matrix.bash \342\200\272 build&push dependencies-general dependencies (AS IN TC).run.xml"
+++ "b/build_system/.jetbrains_run_config/bash lpm_execute_compose_over_build_matrix.bash \342\200\272 build&push dependencies-general dependencies (AS IN TC).run.xml"
@@ -1,5 +1,5 @@
-
+
diff --git a/build_system/.jetbrains_run_config/cwd tree + docker system disk usage.run.xml b/build_system/.jetbrains_run_config/cwd tree + docker system disk usage.run.xml
index 3234c0a3..7f122a19 100644
--- a/build_system/.jetbrains_run_config/cwd tree + docker system disk usage.run.xml
+++ b/build_system/.jetbrains_run_config/cwd tree + docker system disk usage.run.xml
@@ -1,6 +1,6 @@
-
-
+
+
diff --git a/build_system/.jetbrains_run_config/list docker images + container.run.xml b/build_system/.jetbrains_run_config/list docker images + container.run.xml
index 9894da23..872f1bdf 100644
--- a/build_system/.jetbrains_run_config/list docker images + container.run.xml
+++ b/build_system/.jetbrains_run_config/list docker images + container.run.xml
@@ -1,5 +1,5 @@
-
+
diff --git a/build_system/.jetbrains_run_config/run and open a terminal in a Ubuntu 20.04 container.run.xml b/build_system/.jetbrains_run_config/run and open a terminal in a Ubuntu 20.04 container.run.xml
index d2ac23c8..6f3419b4 100644
--- a/build_system/.jetbrains_run_config/run and open a terminal in a Ubuntu 20.04 container.run.xml
+++ b/build_system/.jetbrains_run_config/run and open a terminal in a Ubuntu 20.04 container.run.xml
@@ -1,6 +1,6 @@
-
-
+
+
diff --git a/build_system/README.md b/build_system/README.md
new file mode 100644
index 00000000..58514a98
--- /dev/null
+++ b/build_system/README.md
@@ -0,0 +1 @@
+See [README.md #Contributing](https://github.com/norlab-ulaval/libpointmatcher/tree/master#contributing) for instructions on how integrate the `libpointmatcher-build-system` to your local development workflow (on your workstation).
diff --git a/build_system/lpm_crawl_dependencies_build_matrix.bash b/build_system/lpm_crawl_dependencies_build_matrix.bash
index fd80f95e..af86952a 100644
--- a/build_system/lpm_crawl_dependencies_build_matrix.bash
+++ b/build_system/lpm_crawl_dependencies_build_matrix.bash
@@ -1,4 +1,5 @@
#!/bin/bash
+# =================================================================================================
#
# Execute build matrix specified in '.env.build_matrix.dependencies'
#
@@ -11,22 +12,28 @@
#
# Run script with the '--help' flag for details
#
+# =================================================================================================
+PARAMS="$@"
# ....path resolution logic........................................................................
-NBS_PATH_TO_SRC_SCRIPT="$(realpath "${BASH_SOURCE[0]}")"
-LPM_ROOT_DIR="$(dirname "${NBS_PATH_TO_SRC_SCRIPT}")/.."
-N2ST_ROOT_DIR="$(dirname "${NBS_PATH_TO_SRC_SCRIPT}")/utilities/norlab-shell-script-tools"
+LPM_ROOT="$(dirname "$(realpath "$0")")/.."
+LPM_BUILD_SYSTEM_PATH="${LPM_ROOT}/build_system"
+NBS_PATH="${LPM_BUILD_SYSTEM_PATH}/utilities/norlab-build-system"
+N2ST_PATH="${LPM_BUILD_SYSTEM_PATH}/utilities/norlab-shell-script-tools"
# ....Load environment variables from file.........................................................
-set -o allexport && source ${LPM_ROOT_DIR}/build_system/.env && set +o allexport
+cd "${LPM_BUILD_SYSTEM_PATH}" || exit
+set -o allexport && source .env && set +o allexport
-DOTENV_BUILD_MATRIX=${LPM_ROOT_DIR}/build_system/.env.build_matrix.dependencies
+# ....Source NBS dependencies......................................................................
+cd "${NBS_PATH}" || exit
+source import_norlab_build_system_lib.bash
-# ....Helper function..............................................................................
-# import shell functions from utilities library
-source "${N2ST_ROOT_DIR}"/import_norlab_shell_script_tools_lib.bash
+# ====begin========================================================================================
+cd "${NBS_PATH}/src/utility_scripts" || exit
-# ====Begin========================================================================================
-cd "${LPM_ROOT_DIR}"/build_system/utilities/norlab-build-system/src/utility_scripts
-source nbs_execute_compose_over_build_matrix.bash "${DOTENV_BUILD_MATRIX}" "$@"
-#source nbs_execute_compose_over_build_matrix.bash --help # (CRITICAL) ToDo: on task end >> delete this line ←
+DOTENV_BUILD_MATRIX_REALPATH=${LPM_BUILD_SYSTEM_PATH}/.env.build_matrix.dependencies
+
+# Note: do not double cote PARAMS or threat it as a array otherwise it will cause error
+# shellcheck disable=SC2086
+source nbs_execute_compose_over_build_matrix.bash "${DOTENV_BUILD_MATRIX_REALPATH}" $PARAMS
diff --git a/build_system/lpm_crawl_libpointmatcher_build_matrix.bash b/build_system/lpm_crawl_libpointmatcher_build_matrix.bash
index a6520384..4f4d6449 100644
--- a/build_system/lpm_crawl_libpointmatcher_build_matrix.bash
+++ b/build_system/lpm_crawl_libpointmatcher_build_matrix.bash
@@ -1,4 +1,5 @@
#!/bin/bash
+# =================================================================================================
#
# Execute build matrix specified in .env.build_matrix.libpointmatcher
#
@@ -11,21 +12,29 @@
#
# Run script with the '--help' flag for details
#
+# =================================================================================================
+PARAMS="$@"
# ....path resolution logic........................................................................
-NBS_PATH_TO_SRC_SCRIPT="$(realpath "${BASH_SOURCE[0]}")"
-LPM_ROOT_DIR="$(dirname "${NBS_PATH_TO_SRC_SCRIPT}")/.."
-N2ST_ROOT_DIR="$(dirname "${NBS_PATH_TO_SRC_SCRIPT}")/utilities/norlab-shell-script-tools"
+LPM_ROOT="$(dirname "$(realpath "$0")")/.."
+LPM_BUILD_SYSTEM_PATH="${LPM_ROOT}/build_system"
+NBS_PATH="${LPM_BUILD_SYSTEM_PATH}/utilities/norlab-build-system"
+N2ST_PATH="${LPM_BUILD_SYSTEM_PATH}/utilities/norlab-shell-script-tools"
# ....Load environment variables from file.........................................................
-set -o allexport && source ${LPM_ROOT_DIR}/build_system/.env && set +o allexport
+cd "${LPM_BUILD_SYSTEM_PATH}" || exit
+set -o allexport && source .env && set +o allexport
-DOTENV_BUILD_MATRIX=${LPM_ROOT_DIR}/build_system/.env.build_matrix.libpointmatcher
+# ....Source NBS dependencies......................................................................
+cd "${NBS_PATH}" || exit
+source import_norlab_build_system_lib.bash
-# ....Helper function..............................................................................
-# import shell functions from utilities library
-source "${N2ST_ROOT_DIR}"/import_norlab_shell_script_tools_lib.bash
+# ====begin========================================================================================
+cd "${NBS_PATH}/src/utility_scripts" || exit
+
+DOTENV_BUILD_MATRIX_REALPATH=${LPM_BUILD_SYSTEM_PATH}/.env.build_matrix.libpointmatcher
+
+# Note: do not double cote PARAMS or threat it as a array otherwise it will cause error
+# shellcheck disable=SC2086
+source nbs_execute_compose_over_build_matrix.bash "${DOTENV_BUILD_MATRIX_REALPATH}" $PARAMS
-# ====Begin========================================================================================
-cd "${LPM_ROOT_DIR}"/build_system/utilities/norlab-build-system/src/utility_scripts
-source nbs_execute_compose_over_build_matrix.bash "${DOTENV_BUILD_MATRIX}" "$@"
diff --git a/build_system/lpm_crawl_libpointmatcher_build_matrix.bleeding.bash b/build_system/lpm_crawl_libpointmatcher_build_matrix.bleeding.bash
index 33dfafde..a2d305bd 100644
--- a/build_system/lpm_crawl_libpointmatcher_build_matrix.bleeding.bash
+++ b/build_system/lpm_crawl_libpointmatcher_build_matrix.bleeding.bash
@@ -1,31 +1,39 @@
#!/bin/bash
+# =================================================================================================
#
# Execute build matrix specified in .env.build_matrix.libpointmatcher.bleeding
#
# Redirect the execution to 'nbs_execute_compose_over_build_matrix.bash' from the norlab-build-system library
#
# Usage:
-# $ bash lpm_crawl_libpointmatcher_build_matrix.bash [] [-- ]
+# $ bash lpm_crawl_libpointmatcher_build_matrix.bleeding.bash [] [-- ]
#
-# $ bash lpm_crawl_libpointmatcher_build_matrix.bash -- build --dry-run
+# $ bash lpm_crawl_libpointmatcher_build_matrix.bleeding.bash -- build --dry-run
#
# Run script with the '--help' flag for details
#
+# =================================================================================================
+PARAMS="$@"
# ....path resolution logic........................................................................
-NBS_PATH_TO_SRC_SCRIPT="$(realpath "${BASH_SOURCE[0]}")"
-LPM_ROOT_DIR="$(dirname "${NBS_PATH_TO_SRC_SCRIPT}")/.."
-N2ST_ROOT_DIR="$(dirname "${NBS_PATH_TO_SRC_SCRIPT}")/utilities/norlab-shell-script-tools"
+LPM_ROOT="$(dirname "$(realpath "$0")")/.."
+LPM_BUILD_SYSTEM_PATH="${LPM_ROOT}/build_system"
+NBS_PATH="${LPM_BUILD_SYSTEM_PATH}/utilities/norlab-build-system"
+N2ST_PATH="${LPM_BUILD_SYSTEM_PATH}/utilities/norlab-shell-script-tools"
# ....Load environment variables from file.........................................................
-set -o allexport && source ${LPM_ROOT_DIR}/build_system/.env && set +o allexport
+cd "${LPM_BUILD_SYSTEM_PATH}" || exit
+set -o allexport && source .env && set +o allexport
-DOTENV_BUILD_MATRIX=${LPM_ROOT_DIR}/build_system/.env.build_matrix.libpointmatcher.bleeding
+# ....Source NBS dependencies......................................................................
+cd "${NBS_PATH}" || exit
+source import_norlab_build_system_lib.bash
-# ....Helper function..............................................................................
-# import shell functions from utilities library
-source "${N2ST_ROOT_DIR}"/import_norlab_shell_script_tools_lib.bash
+# ====begin========================================================================================
+cd "${NBS_PATH}/src/utility_scripts" || exit
-# ====Begin========================================================================================
-cd "${LPM_ROOT_DIR}"/build_system/utilities/norlab-build-system/src/utility_scripts
-source nbs_execute_compose_over_build_matrix.bash "${DOTENV_BUILD_MATRIX}" "$@"
+DOTENV_BUILD_MATRIX_REALPATH=${LPM_BUILD_SYSTEM_PATH}/.env.build_matrix.libpointmatcher.bleeding
+
+# Note: do not double cote PARAMS or threat it as a array otherwise it will cause error
+# shellcheck disable=SC2086
+source nbs_execute_compose_over_build_matrix.bash "${DOTENV_BUILD_MATRIX_REALPATH}" $PARAMS
diff --git a/build_system/tests/run_all_docker_dryrun_and_config_tests.bash b/build_system/tests/run_all_docker_dryrun_and_config_tests.bash
index 553befce..21c44449 100644
--- a/build_system/tests/run_all_docker_dryrun_and_config_tests.bash
+++ b/build_system/tests/run_all_docker_dryrun_and_config_tests.bash
@@ -7,7 +7,7 @@
#
#
-_PATH_TO_SCRIPT="$(realpath "${BASH_SOURCE[0]}")"
+_PATH_TO_SCRIPT="$(realpath "$0")"
SCRIPT_DIR_PATH="$(dirname "${_PATH_TO_SCRIPT}")"
TEST_DIR="$SCRIPT_DIR_PATH/tests_docker_dryrun_and_config"
diff --git a/build_system/tests/run_bats_core_test_in_n2st.bash b/build_system/tests/run_bats_core_test_in_n2st.bash
index 8486eaf9..e6941dda 100644
--- a/build_system/tests/run_bats_core_test_in_n2st.bash
+++ b/build_system/tests/run_bats_core_test_in_n2st.bash
@@ -1,10 +1,8 @@
#!/bin/bash
# =================================================================================================
-# Execute '' repo shell script tests via 'norlab-shell-script-tools' library
+# Execute libpointmatcher repo shell script tests via 'norlab-shell-script-tools' library
#
-# 1. ToDo: Copy this script somewhere in your superproject
-# 2. (optional) ToDo: set N2ST_PATH=""
-# 3. Execute the script
+# Note the script can be executed from anywhere as long as its inside the libpointmatcher repository
#
# Usage:
# $ bash run_bats_core_test_in_n2st.bash ['[/]' ['']]
@@ -14,11 +12,15 @@
# - ['/'] A specific bats file to run, default will
# run all bats file in the test directory
#
-# Globals:
-# Read N2ST_PATH Default to "./utilities/norlab-shell-script-tools"
+# Globals: none
#
# =================================================================================================
-OPTIONS="$@"
+PARAMS="$@"
+
+if [[ -z $PARAMS ]]; then
+ # Set to default bats tests directory if none specified
+ PARAMS="build_system/tests/tests_bats/"
+fi
N2ST_PATH="build_system/utilities/norlab-shell-script-tools"
@@ -32,7 +34,9 @@ function n2st::run_n2st_testsing_tools(){
# ....Execute N2ST run_bats_tests_in_docker.bash.................................................
cd "$LPM_PATH"
- bash "${N2ST_PATH}/tests/bats_testing_tools/run_bats_tests_in_docker.bash" "$OPTIONS"
+
+ # shellcheck disable=SC2086
+ bash "${N2ST_PATH}/tests/bats_testing_tools/run_bats_tests_in_docker.bash" $PARAMS
# ....Teardown...................................................................................
cd "$TMP_CWD"
diff --git a/build_system/tests/tests_bats/bats_helper_functions.bash b/build_system/tests/tests_bats/bats_helper_functions.bash
new file mode 100644
index 00000000..efbbea4f
--- /dev/null
+++ b/build_system/tests/tests_bats/bats_helper_functions.bash
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+function test_generic_help_flag_logic() {
+ assert_success
+
+ assert_output --regexp .*"Starting".*"${TESTED_FILE}".*"\$".*"${TESTED_FILE} \[--help\] <.env.build_matrix.*> \[\] \[-- \]".*"Mandatory argument:".*"<.env.build_matrix.*>".*"Optional arguments:".*"-h, --help".*"--docker-debug-logs".*"--fail-fast"
+
+ refute_output --regexp .*"Starting".*"${TESTED_FILE}".*"\[NBS\]".*"Build images specified in".*"'${COMPOSE_FILE}'".*"following".*"${DOTENV_BUILD_MATRIX_NAME}"
+}
diff --git a/build_system/tests/tests_bats/test_lpm_crawl_dependencies_build_matrix.bats b/build_system/tests/tests_bats/tests_crawler/test_lpm_crawl_dependencies_build_matrix.bats
similarity index 67%
rename from build_system/tests/tests_bats/test_lpm_crawl_dependencies_build_matrix.bats
rename to build_system/tests/tests_bats/tests_crawler/test_lpm_crawl_dependencies_build_matrix.bats
index c954fb82..c531989e 100644
--- a/build_system/tests/tests_bats/test_lpm_crawl_dependencies_build_matrix.bats
+++ b/build_system/tests/tests_bats/tests_crawler/test_lpm_crawl_dependencies_build_matrix.bats
@@ -24,6 +24,7 @@ if [[ -d ${BATS_HELPER_PATH} ]]; then
load "${BATS_HELPER_PATH}/bats-assert/load"
load "${BATS_HELPER_PATH}/bats-file/load"
load "${SRC_CODE_PATH}/${N2ST_BATS_TESTING_TOOLS_RELATIVE_PATH}/bats_helper_functions"
+ load "${SRC_CODE_PATH}/build_system/tests/tests_bats/bats_helper_functions"
#load "${BATS_HELPER_PATH}/bats-detik/load" # << Kubernetes support
else
echo -e "\n[\033[1;31mERROR\033[0m] $0 path to bats-core helper library unreachable at \"${BATS_HELPER_PATH}\"!"
@@ -67,33 +68,23 @@ teardown() {
# ====Test casses==================================================================================
-@test "${TESTED_FILE} › dependencies image › execute ok › expect pass" {
-# skip "tmp mute" # ToDo: on task end >> delete this line ←
+@test "${TESTED_FILE} › docker image › execute ok › expect pass" {
-# run bash "${TESTED_FILE}" "${DOTENV_BUILD_MATRIX}" --fail-fast -- build >&3
run bash "${TESTED_FILE}" "${DOTENV_BUILD_MATRIX}" --fail-fast -- build
assert_success
- assert_output --regexp .*"Starting".*"${TESTED_FILE}".*"[NBS]".*"Build images specified in".*"'${COMPOSE_FILE}'".*"following".*"${DOTENV_BUILD_MATRIX_NAME}"
+ assert_output --regexp .*"Starting".*"${TESTED_FILE}".*"\[NBS\]".*"Build images specified in".*"'${COMPOSE_FILE}'".*"following".*"${DOTENV_BUILD_MATRIX_NAME}"
assert_output --regexp "Status of tag crawled:".*"Pass".*"› latest".*"Completed".*"${TESTED_FILE}".*
}
+# ....Test --help flag related logic...............................................................
@test "${TESTED_FILE} › --help as first argument › execute ok › expect pass" {
-# skip "tmp mute" # ToDo: on task end >> delete this line ←
-
run bash "${TESTED_FILE}" --help
-
- assert_success
- assert_output --regexp .*"Starting".*"${TESTED_FILE}".*"\$".*"${TESTED_FILE}".*"[--help]".*"<.env.build_matrix.*>".*"[]".*"[".*"]".*"Mandatory argument:".*"<.env.build_matrix.*>".*"Optional arguments:".*"-h, --help".*"--docker-debug-logs".*"--fail-fast"
- refute_output --regexp .*"Starting".*"${TESTED_FILE}".*"[NBS]".*"Build images specified in".*"'${COMPOSE_FILE}'".*"following".*"${DOTENV_BUILD_MATRIX_NAME}"
+ test_generic_help_flag_logic
}
@test "${TESTED_FILE} › second arg: --help › execute ok › expect pass" {
-# skip "tmp mute" # ToDo: on task end >> delete this line ←
-
run bash "${TESTED_FILE}" --fail-fast --help
- assert_success
- assert_output --regexp .*"Starting".*"${TESTED_FILE}".*"\$".*"${TESTED_FILE}".*"[--help]".*"<.env.build_matrix.*>".*"[]".*"[".*"]".*"Mandatory argument:".*"<.env.build_matrix.*>".*"Optional arguments:".*"-h, --help".*"--docker-debug-logs".*"--fail-fast"
- refute_output --regexp .*"Starting".*"${TESTED_FILE}".*"[NBS]".*"Build images specified in".*"'${COMPOSE_FILE}'".*"following".*"${DOTENV_BUILD_MATRIX_NAME}"
+ test_generic_help_flag_logic
}
# ToDo: implement >> test for IS_TEAMCITY_RUN==true casses
diff --git a/build_system/tests/tests_bats/test_lpm_crawl_libpointmatcher_build_matrix.bats b/build_system/tests/tests_bats/tests_crawler/test_lpm_crawl_libpointmatcher_build_matrix.bats
similarity index 61%
rename from build_system/tests/tests_bats/test_lpm_crawl_libpointmatcher_build_matrix.bats
rename to build_system/tests/tests_bats/tests_crawler/test_lpm_crawl_libpointmatcher_build_matrix.bats
index 9544b06c..710100c2 100644
--- a/build_system/tests/tests_bats/test_lpm_crawl_libpointmatcher_build_matrix.bats
+++ b/build_system/tests/tests_bats/tests_crawler/test_lpm_crawl_libpointmatcher_build_matrix.bats
@@ -24,6 +24,7 @@ if [[ -d ${BATS_HELPER_PATH} ]]; then
load "${BATS_HELPER_PATH}/bats-assert/load"
load "${BATS_HELPER_PATH}/bats-file/load"
load "${SRC_CODE_PATH}/${N2ST_BATS_TESTING_TOOLS_RELATIVE_PATH}/bats_helper_functions"
+ load "${SRC_CODE_PATH}/build_system/tests/tests_bats/bats_helper_functions"
#load "${BATS_HELPER_PATH}/bats-detik/load" # << Kubernetes support
else
echo -e "\n[\033[1;31mERROR\033[0m] $0 path to bats-core helper library unreachable at \"${BATS_HELPER_PATH}\"!"
@@ -67,42 +68,27 @@ teardown() {
# ====Test casses==================================================================================
-#@test "${TESTED_FILE} › dependencies image › execute ok › expect pass" {
-## skip "tmp mute" # ToDo: on task end >> delete this line ←
-#
-# run bash "${TESTED_FILE}" "${DOTENV_BUILD_MATRIX}" --fail-fast -- build
-# assert_success
-# assert_output --regexp .*"Starting".*"${TESTED_FILE".*"[NBS]".*"Build images specified in".*"'${COMPOSE_FILE}'".*"following".*"${DOTENV_BUILD_MATRIX_NAME}"
-# assert_output --regexp "Status of tag crawled:".*"Pass".*"› latest-ubuntu-bionic".*"Pass".*"› latest-ubuntu-focal".*"Completed".*"${TESTED_FILE".*
-#}
-@test "${TESTED_FILE} › libpointmatcher image › execute ok › expect pass" {
-# skip "tmp mute" # ToDo: on task end >> delete this line ←
+@test "${TESTED_FILE} › docker image › execute ok › expect pass" {
run bash "${TESTED_FILE}" "${DOTENV_BUILD_MATRIX}" --fail-fast -- build
+
assert_success
- assert_output --regexp .*"Starting".*"${TESTED_FILE}".*"[NBS]".*"Build images specified in".*"'${COMPOSE_FILE}'".*"following".*"${DOTENV_BUILD_MATRIX_NAME}"
+ assert_output --regexp .*"Starting".*"${TESTED_FILE}".*"\[NBS\]".*"Build images specified in".*"'${COMPOSE_FILE}'".*"following".*"${DOTENV_BUILD_MATRIX_NAME}"
assert_output --regexp "Status of tag crawled:".*"Pass".*"› latest".*"Completed".*"${TESTED_FILE}".*
}
-@test "${TESTED_FILE} › --help as first argument › execute ok › expect pass" {
-# skip "tmp mute" # ToDo: on task end >> delete this line ←
+# ....Test --help flag related logic...............................................................
+@test "${TESTED_FILE} › --help as first argument › execute ok › expect pass" {
run bash "${TESTED_FILE}" --help
-
- assert_success
- assert_output --regexp .*"Starting".*"${TESTED_FILE}".*"\$".*"${TESTED_FILE}".*"[--help]".*"<.env.build_matrix.*>".*"[]".*"[".*"]".*"Mandatory argument:".*"<.env.build_matrix.*>".*"Optional arguments:".*"-h, --help".*"--docker-debug-logs".*"--fail-fast"
- refute_output --regexp .*"Starting".*"${TESTED_FILE}".*"[NBS]".*"Build images specified in".*"'${COMPOSE_FILE}'".*"following".*"${DOTENV_BUILD_MATRIX_NAME}"
+ test_generic_help_flag_logic
}
@test "${TESTED_FILE} › second arg: --help › execute ok › expect pass" {
-# skip "tmp mute" # ToDo: on task end >> delete this line ←
-
run bash "${TESTED_FILE}" --fail-fast --help
- assert_success
- assert_output --regexp .*"Starting".*"${TESTED_FILE}".*"\$".*"${TESTED_FILE}".*"[--help]".*"<.env.build_matrix.*>".*"[]".*"[".*"]".*"Mandatory argument:".*"<.env.build_matrix.*>".*"Optional arguments:".*"-h, --help".*"--docker-debug-logs".*"--fail-fast"
- refute_output --regexp .*"Starting".*"${TESTED_FILE}".*"[NBS]".*"Build images specified in".*"'${COMPOSE_FILE}'".*"following".*"${DOTENV_BUILD_MATRIX_NAME}"
+ test_generic_help_flag_logic
}
# ToDo: implement >> test for IS_TEAMCITY_RUN==true casses
diff --git a/build_system/tests/tests_bats/tests_crawler/test_lpm_crawl_libpointmatcher_build_matrix.bleeding.bats b/build_system/tests/tests_bats/tests_crawler/test_lpm_crawl_libpointmatcher_build_matrix.bleeding.bats
new file mode 100644
index 00000000..5de79c85
--- /dev/null
+++ b/build_system/tests/tests_bats/tests_crawler/test_lpm_crawl_libpointmatcher_build_matrix.bleeding.bats
@@ -0,0 +1,101 @@
+#!/usr/bin/env bats
+#
+# Usage in docker container
+# $ REPO_ROOT=$(pwd) && RUN_TESTS_IN_DIR='tests'
+# $ docker run -it --rm -v "$REPO_ROOT:/code" bats/bats:latest "$RUN_TESTS_IN_DIR"
+#
+# Note: "/code" is the working directory in the bats official image
+#
+# bats-core ref:
+# - https://bats-core.readthedocs.io/en/stable/tutorial.html
+# - https://bats-core.readthedocs.io/en/stable/writing-tests.html
+# - https://opensource.com/article/19/2/testing-bash-bats
+# ↳ https://github.com/dmlond/how_to_bats/blob/master/test/build.bats
+#
+# Helper library:
+# - https://github.com/bats-core/bats-assert
+# - https://github.com/bats-core/bats-support
+# - https://github.com/bats-core/bats-file
+#
+
+BATS_HELPER_PATH=/usr/lib/bats
+if [[ -d ${BATS_HELPER_PATH} ]]; then
+ load "${BATS_HELPER_PATH}/bats-support/load"
+ load "${BATS_HELPER_PATH}/bats-assert/load"
+ load "${BATS_HELPER_PATH}/bats-file/load"
+ load "${SRC_CODE_PATH}/${N2ST_BATS_TESTING_TOOLS_RELATIVE_PATH}/bats_helper_functions"
+ load "${SRC_CODE_PATH}/build_system/tests/tests_bats/bats_helper_functions"
+ #load "${BATS_HELPER_PATH}/bats-detik/load" # << Kubernetes support
+else
+ echo -e "\n[\033[1;31mERROR\033[0m] $0 path to bats-core helper library unreachable at \"${BATS_HELPER_PATH}\"!"
+ echo '(press any key to exit)'
+ read -r -n 1
+ exit 1
+fi
+
+# ====Setup========================================================================================
+
+TESTED_FILE="lpm_crawl_libpointmatcher_build_matrix.bleeding.bash"
+TESTED_FILE_PATH="./build_system/"
+COMPOSE_FILE="docker-compose.libpointmatcher.yaml"
+DOTENV_BUILD_MATRIX="${SRC_CODE_PATH}"/build_system/.env.build_matrix.libpointmatcher.bleeding
+DOTENV_BUILD_MATRIX_NAME=$( basename "${DOTENV_BUILD_MATRIX}" )
+
+# executed once before starting the first test (valide for all test in that file)
+setup_file() {
+ BATS_DOCKER_WORKDIR=$(pwd) && export BATS_DOCKER_WORKDIR
+
+ ## Uncomment the following for debug, the ">&3" is for printing bats msg to stdin
+# pwd >&3 && tree -L 1 -a -hug >&3
+# printenv >&3
+}
+
+# executed before each test
+setup() {
+ cd "$TESTED_FILE_PATH" || exit
+}
+
+# ====Teardown=====================================================================================
+
+# executed after each test
+teardown() {
+ bats_print_run_env_variable_on_error
+}
+
+## executed once after finishing the last test (valide for all test in that file)
+#teardown_file() {
+#}
+
+# ====Test casses==================================================================================
+
+@test "${TESTED_FILE} › docker image › execute ok › expect pass" {
+# skip "tmp mute" # ToDo: on task end >> delete this line ←
+
+ run bash "${TESTED_FILE}" "${DOTENV_BUILD_MATRIX}" --fail-fast -- build
+# OPTIONS=( "${DOTENV_BUILD_MATRIX}" "--ubuntu-version-build-matrix-override jammy" "--fail-fast" "--" "config --quiet" )
+# run bash "${TESTED_FILE}" "${OPTIONS[@]}"
+
+ assert_success
+ assert_output --regexp .*"Starting".*"${TESTED_FILE}".*"\[NBS\]".*"Build images specified in".*"'${COMPOSE_FILE}'".*"following".*"${DOTENV_BUILD_MATRIX_NAME}"
+ assert_output --regexp .*"\[NBS done\]".*"FINAL › Build matrix completed with command".*"\$".*"docker compose -f ${COMPOSE_FILE}"
+# build --dry-run
+ assert_output --regexp "Status of tag crawled:".*"Pass".*"› latest".*"Completed".*"${TESTED_FILE}".*
+}
+
+# ....Test --help flag related logic...............................................................
+
+@test "${TESTED_FILE} › --help as first argument › execute ok › expect pass" {
+# skip "tmp dev" # ToDo: on task end >> delete this line ←
+ run bash "${TESTED_FILE}" --help
+ test_generic_help_flag_logic
+}
+
+@test "${TESTED_FILE} › second arg: --help › execute ok › expect pass" {
+# skip "tmp dev" # ToDo: on task end >> delete this line ←
+
+ run bash "${TESTED_FILE}" --fail-fast --help
+ test_generic_help_flag_logic
+}
+
+## ToDo: implement >> test for IS_TEAMCITY_RUN==true casses
+## (NICE TO HAVE) ToDo: implement >> test for python intsall casses with regard to distribution
diff --git a/build_system/tests/tests_bats/test_lpm_install_docker_tools_and_buildx_create_script.bats b/build_system/tests/tests_bats/tests_installer/test_lpm_install_docker_tools_and_buildx_create_script.bats
similarity index 100%
rename from build_system/tests/tests_bats/test_lpm_install_docker_tools_and_buildx_create_script.bats
rename to build_system/tests/tests_bats/tests_installer/test_lpm_install_docker_tools_and_buildx_create_script.bats
diff --git a/build_system/version.libpointmatcher_build_system.txt b/build_system/version.libpointmatcher_build_system.txt
deleted file mode 100644
index 6e8bf73a..00000000
--- a/build_system/version.libpointmatcher_build_system.txt
+++ /dev/null
@@ -1 +0,0 @@
-0.1.0
diff --git a/build_system/version.lpm_build_system.txt b/build_system/version.lpm_build_system.txt
new file mode 100644
index 00000000..17e51c38
--- /dev/null
+++ b/build_system/version.lpm_build_system.txt
@@ -0,0 +1 @@
+0.1.1
diff --git a/commit_msg_reference.md b/commit_msg_reference.md
new file mode 100644
index 00000000..251335b4
--- /dev/null
+++ b/commit_msg_reference.md
@@ -0,0 +1,37 @@
+# Conventional Commits
+
+See https://www.conventionalcommits.org for details
+
+
+#### Commit types description:
+
+- `!`: Commit that introduces a breaking API change (correlating with MAJOR in Semantic
+ Versioning)
+- `feat`: A new feature
+- `fix`: A bug fix
+- `docs`: Documentation only changes
+- `style`: Changes that do not affect the meaning of the code (white-space, formatting, missing
+ semi-colons, etc)
+- `refactor`: A code change that neither fixes a bug nor adds a feature
+- `perf`: A code change that improves performance
+- `test`: Adding missing tests or correcting existing tests
+- `build`: Changes that affect the build system or external dependencies (example scopes: gulp,
+ broccoli, npm)
+- `ci`: Changes to our CI configuration files and scripts (example scopes: Travis, Circle,
+ BrowserStack, SauceLabs)
+- `chore`: Other changes that don't modify src or test files
+- `revert`: Reverts a previous commit
+
+#### Commit footer:
+
+- `BREAKING CHANGE`: Commit that introduces a breaking API change (correlating with MAJOR in Semantic Versioning)
+
+#### Commit message structure
+```
+[()]:
+
+[optional-body]
+
+[optional-footer(s)]
+
+```
diff --git a/pointmatcher/PointMatcher.h b/pointmatcher/PointMatcher.h
index 57760726..c6acefd6 100644
--- a/pointmatcher/PointMatcher.h
+++ b/pointmatcher/PointMatcher.h
@@ -70,9 +70,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//! version of the Pointmatcher library as string
-#define POINTMATCHER_VERSION "1.3.1"
+#define POINTMATCHER_VERSION "1.4.0"
//! version of the Pointmatcher library as an int
-#define POINTMATCHER_VERSION_INT 10301
+#define POINTMATCHER_VERSION_INT 10400
//! Functions and classes that are not dependant on scalar type are defined in this namespace
namespace PointMatcherSupport