From b8a4ba73648ee4e6078718dbcd1b1e048e7d7531 Mon Sep 17 00:00:00 2001 From: Nicolas Mattia Date: Sat, 11 Jan 2020 11:45:24 +0100 Subject: [PATCH] Reformat libosmium example and build it on CI --- .../{cpp => cpp-libosmium}/CMakeLists.txt | 0 .../cmake/Dependencies.cmake | 0 .../cmake/Modules/FindOsmium.cmake | 0 examples/cpp-libosmium/default.nix | 37 +++++++++++++++++++ .../{cpp => cpp-libosmium}/nix/sources.json | 0 .../{cpp => cpp-libosmium}/nix/sources.nix | 12 +++--- examples/{cpp => cpp-libosmium}/overlay.nix | 2 +- .../overlay/libosmium.nix | 10 ++--- .../{cpp => cpp-libosmium}/src/CMakeLists.txt | 0 examples/{cpp => cpp-libosmium}/src/main.cpp | 0 examples/cpp/default.nix | 37 ------------------- script/test | 16 +++++++- 12 files changed, 64 insertions(+), 50 deletions(-) rename examples/{cpp => cpp-libosmium}/CMakeLists.txt (100%) rename examples/{cpp => cpp-libosmium}/cmake/Dependencies.cmake (100%) rename examples/{cpp => cpp-libosmium}/cmake/Modules/FindOsmium.cmake (100%) create mode 100644 examples/cpp-libosmium/default.nix rename examples/{cpp => cpp-libosmium}/nix/sources.json (100%) rename examples/{cpp => cpp-libosmium}/nix/sources.nix (93%) rename examples/{cpp => cpp-libosmium}/overlay.nix (97%) rename examples/{cpp => cpp-libosmium}/overlay/libosmium.nix (67%) rename examples/{cpp => cpp-libosmium}/src/CMakeLists.txt (100%) rename examples/{cpp => cpp-libosmium}/src/main.cpp (100%) delete mode 100644 examples/cpp/default.nix diff --git a/examples/cpp/CMakeLists.txt b/examples/cpp-libosmium/CMakeLists.txt similarity index 100% rename from examples/cpp/CMakeLists.txt rename to examples/cpp-libosmium/CMakeLists.txt diff --git a/examples/cpp/cmake/Dependencies.cmake b/examples/cpp-libosmium/cmake/Dependencies.cmake similarity index 100% rename from examples/cpp/cmake/Dependencies.cmake rename to examples/cpp-libosmium/cmake/Dependencies.cmake diff --git a/examples/cpp/cmake/Modules/FindOsmium.cmake b/examples/cpp-libosmium/cmake/Modules/FindOsmium.cmake similarity index 100% rename from examples/cpp/cmake/Modules/FindOsmium.cmake rename to examples/cpp-libosmium/cmake/Modules/FindOsmium.cmake diff --git a/examples/cpp-libosmium/default.nix b/examples/cpp-libosmium/default.nix new file mode 100644 index 0000000..f46a7b7 --- /dev/null +++ b/examples/cpp-libosmium/default.nix @@ -0,0 +1,37 @@ +let + sources = import ./nix/sources.nix; + pkgs = import sources.nixpkgs { + overlays = [ + (_: _: { inherit sources; }) + (import ./overlay.nix) + ]; + }; +in + with pkgs; + + stdenv.mkDerivation { + name = "nix-cpp-demo"; + nativeBuildInputs = [ cmake pkgconfig ]; + src = pkgs.lib.cleanSource ./.; + + # tell Cmake location of all headers + cmakeFlags = [ + "-DEXTERNAL_INCLUDE_DIRECTORIES=${stdenv.lib.strings.makeSearchPathOutput "dev" "include" libosmium.buildInputs}" + ]; + + buildInputs = stdenv.lib.lists.concatLists [ + # We want to check if dependencies exist using find_package + [ + libosmium.buildInputs + ] + # dependencies + [ + libosmium + ] + ]; + + installPhase = '' + mkdir -p $out/bin + cp bin/hello-world $out/bin + ''; + } diff --git a/examples/cpp/nix/sources.json b/examples/cpp-libosmium/nix/sources.json similarity index 100% rename from examples/cpp/nix/sources.json rename to examples/cpp-libosmium/nix/sources.json diff --git a/examples/cpp/nix/sources.nix b/examples/cpp-libosmium/nix/sources.nix similarity index 93% rename from examples/cpp/nix/sources.nix rename to examples/cpp-libosmium/nix/sources.nix index 718ea6f..6e2bf23 100644 --- a/examples/cpp/nix/sources.nix +++ b/examples/cpp-libosmium/nix/sources.nix @@ -19,7 +19,7 @@ let pkgs.fetchzip { inherit (spec) url sha256; }; fetch_git = spec: - builtins.fetchGit { url = spec.repo; inherit (spec) rev ref; }; + builtins.fetchGit { url = spec.repo; inherit (spec) rev ref; }; fetch_builtin-tarball = spec: builtins.trace @@ -125,12 +125,14 @@ let # The "config" used by the fetchers mkConfig = { sourcesFile ? ./sources.json + , sources ? builtins.fromJSON (builtins.readFile sourcesFile) + , pkgs ? mkPkgs sources }: rec { # The sources, i.e. the attribute set of spec name to spec - sources = builtins.fromJSON (builtins.readFile sourcesFile); + inherit sources; + # The "pkgs" (evaluated nixpkgs) to use for e.g. non-builtin fetchers - pkgs = mkPkgs sources; + inherit pkgs; }; in -mkSources (mkConfig {}) // - { __functor = _: settings: mkSources (mkConfig settings); } +mkSources (mkConfig {}) // { __functor = _: settings: mkSources (mkConfig settings); } diff --git a/examples/cpp/overlay.nix b/examples/cpp-libosmium/overlay.nix similarity index 97% rename from examples/cpp/overlay.nix rename to examples/cpp-libosmium/overlay.nix index 346c70c..67b28bc 100644 --- a/examples/cpp/overlay.nix +++ b/examples/cpp-libosmium/overlay.nix @@ -1,3 +1,3 @@ self: super: { libosmium = self.callPackage ./overlay/libosmium.nix {}; -} \ No newline at end of file +} diff --git a/examples/cpp/overlay/libosmium.nix b/examples/cpp-libosmium/overlay/libosmium.nix similarity index 67% rename from examples/cpp/overlay/libosmium.nix rename to examples/cpp-libosmium/overlay/libosmium.nix index d995f67..14dcfba 100644 --- a/examples/cpp/overlay/libosmium.nix +++ b/examples/cpp-libosmium/overlay/libosmium.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchFromGitHub, cmake, protozero, expat, zlib, bzip2, boost, sources ? import ../nix/sources.nix }: +{ stdenv, cmake, protozero, expat, zlib, bzip2, boost, sources }: stdenv.mkDerivation rec { name = "libosmium"; @@ -13,10 +13,10 @@ stdenv.mkDerivation rec { "-DBUILD_TESTING=OFF" ]; buildInputs = [ - protozero + protozero expat - zlib - bzip2 + zlib + bzip2 boost ]; -} \ No newline at end of file +} diff --git a/examples/cpp/src/CMakeLists.txt b/examples/cpp-libosmium/src/CMakeLists.txt similarity index 100% rename from examples/cpp/src/CMakeLists.txt rename to examples/cpp-libosmium/src/CMakeLists.txt diff --git a/examples/cpp/src/main.cpp b/examples/cpp-libosmium/src/main.cpp similarity index 100% rename from examples/cpp/src/main.cpp rename to examples/cpp-libosmium/src/main.cpp diff --git a/examples/cpp/default.nix b/examples/cpp/default.nix deleted file mode 100644 index 4b16e19..0000000 --- a/examples/cpp/default.nix +++ /dev/null @@ -1,37 +0,0 @@ -{ - # import the sources - sources ? import ./nix/sources.nix -}: -let - pkgs = import sources.nixpkgs { - overlays = [ (import ./overlay.nix) ]; - }; -in -with pkgs; - -stdenv.mkDerivation { - name = "nix-cpp-demo"; - nativeBuildInputs = [ cmake pkgconfig]; - src = ./.; - - # tell Cmake location of all headers - cmakeFlags = [ - "-DEXTERNAL_INCLUDE_DIRECTORIES=${stdenv.lib.strings.makeSearchPathOutput "dev" "include" libosmium.buildInputs}" - ]; - - buildInputs = stdenv.lib.lists.concatLists[ - # We want to check if dependencies exist using find_package - [ - libosmium.buildInputs - ] - # dependencies - [ - libosmium - ] - ]; - - installPhase = '' - mkdir -p $out/bin - cp bin/hello-world $out/bin - ''; -} \ No newline at end of file diff --git a/script/test b/script/test index 08b192e..d2ae8c9 100755 --- a/script/test +++ b/script/test @@ -15,6 +15,10 @@ nixargs=( "--max-jobs" "10" ) +targets=( + +) + if [[ ! $OSTYPE =~ darwin ]]; then echo "Not testing on darwin" @@ -23,11 +27,11 @@ if [[ ! $OSTYPE =~ darwin ]]; then else echo "Testing on darwin" echo "Not enabling sandbox, not running integration" - nixargs+=("-A" "niv-test") + targets+=("-A" "niv-test") fi # Build and create a root -nix-build ${nixargs[@]} +nix-build ${nixargs[@]} ${targets[@]} echo "Formatting" if ! nixpkgs-fmt --check . ; then @@ -36,4 +40,12 @@ if ! nixpkgs-fmt --check . ; then exit 1 fi +echo "Building examples" +for example in examples/*; do + echo " - $(basename $example)" + pushd $example + nix-build ${nixargs[@]} + popd +done + echo "all good"