diff options
author | Ralph Amissah <ralph.amissah@gmail.com> | 2021-02-19 16:38:30 -0500 |
---|---|---|
committer | Ralph Amissah <ralph.amissah@gmail.com> | 2021-02-24 16:46:47 -0500 |
commit | e1f5135800d7450ace79d7220a47ac310a617ff5 (patch) | |
tree | a323b27e813a211bc497907a88c90c2169fc8418 | |
parent | 0.11.3 (diff) |
build from static source-tree pre fetch depends
-rw-r--r-- | dub.json | 57 | ||||
-rw-r--r-- | dub.selections.json | 4 | ||||
-rw-r--r-- | flake.nix | 18 | ||||
-rw-r--r-- | makefile | 52 | ||||
-rw-r--r-- | nix/dub.selections.nix | 50 | ||||
-rw-r--r-- | nix/pkglst/shell-pkgs.nix | 4 | ||||
-rw-r--r-- | org/spine_build_scaffold.org | 330 | ||||
-rwxr-xr-x | project.nix | 4 | ||||
-rwxr-xr-x | spine.nix | 4 |
9 files changed, 438 insertions, 85 deletions
@@ -27,11 +27,60 @@ } }, "dependencies": { - "d2sqlite3": "~>0.19.1", - "imageformats": "~>7.0.2", - "dyaml": "~>0.8.0", - "tinyendian": "~>0.2.0" + "spine:d2sqlite3": "*", + "spine:imageformats": "*", + "spine:dyaml": "*" }, + "subPackages": [ + { + "name": "d2sqlite3", + "description": "A thin wrapper around SQLite 3", + "homepage": "https://github.com/dlang-community/d2sqlite3", + "authors": [ "Nicolas Sicard", "Other contributors: see Github repo" ], + "copyright": "Copyright 2011-18 Nicolas Sicard", + "license": "BSL-1.0", + "sourcePaths": [ "./src/ext_depends/d2sqlite3/source" ], + "configurations": [ + { + "name": "with-lib", + "targetType": "library", + "systemDependencies": "SQLite version >= 3.8.7", + "libs": [ "sqlite3" ], + "excludedSourceFiles": [ "source/tests.d" ] + } + ] + }, + { + "name": "imageformats", + "description": "Decoders for PNG, TGA, BMP, JPEG and encoders for PNG, TGA, BMP.", + "authors": [ "Tero Hänninen" ], + "license": "BSL-1.0", + "sourcePaths": [ "./src/ext_depends/imageformats/imageformats" ] + }, + { + "name": "dyaml", + "description": "YAML parser and emitter", + "authors": [ + "Ferdinand Majerech", + "Cameron \"Herringway\" Ross" + ], + "license": "BSL-1.0", + "homepage": "https://github.com/dlang-community/D-YAML", + "copyright": "Copyright © 2011-2018, Ferdinand Majerech", + "sourcePaths": [ + "./src/ext_depends/D-YAML/source/dyaml", + "./src/ext_depends/D-YAML/source/tinyendian" + ], + "importPaths": [ + "./src/ext_depends/D-YAML/source/dyaml", + "./src/ext_depends/D-YAML/source/tinyendian" + ], + "preGenerateCommands": [ + "rm -rf ./src/ext_depends/D-YAML/examples", + "rm -rf ./src/ext_depends/D-YAML/testsuite" + ] + } + ], "configurations": [ { "name": "default", diff --git a/dub.selections.json b/dub.selections.json index a4bd018..322586b 100644 --- a/dub.selections.json +++ b/dub.selections.json @@ -1,9 +1,5 @@ { "fileVersion": 1, "versions": { - "d2sqlite3": "0.19.1", - "dyaml": "0.8.3", - "imageformats": "7.0.2", - "tinyendian": "0.2.0" } } @@ -3,28 +3,12 @@ inputs = { flake-utils.url = "github:numtide/flake-utils"; nixpkgs.url = "/nixpkgs-ra/nixpkgs/.gitworktree/ra/nixpkgs"; - d2sqlite3 = { - url = "github:dlang-community/d2sqlite3"; - flake = false; - }; - tinyendian = { - url = "github:kiith-sa/tinyendian"; - flake = false; - }; - dyaml = { - url = "github:dlang-community/D-YAML"; - flake = false; - }; - imageformats = { - url = "github:lgvz/imageformats"; - flake = false; - }; dub2nix-src = { url = "github:lionello/dub2nix"; flake = false; }; }; - outputs = { self, d2sqlite3, tinyendian, dyaml, imageformats, dub2nix-src, nixpkgs, flake-utils }: + outputs = { self, dub2nix-src, nixpkgs, flake-utils }: let pkgs = nixpkgs.legacyPackages.x86_64-linux; in { @@ -96,6 +96,58 @@ gitZip: gitArchive: git archive -v --format=tar --prefix=spine-$(PROG_VER_DECLARED)-tag-$(PROG_VER_GIT)/ HEAD | gzip > ../spine-$(PROG_VER_DECLARED)-tag-$(PROG_VER_GIT).tar.gz && \ echo "to unzip: tar -xzf spine-$(PROG_VER_DECLARED)-tag-$(PROG_VER_GIT).tar.gz" +get_depends: + hwd=$$(echo `pwd`) && \ + gwd="$${hwd}/src/ext_depends" && \ + dirs=$$(echo `ls -gx $${gwd}`) && \ + echo $${hwd} && \ + echo $${gwd} && \ + echo $${dirs} && \ + cd $${gwd} && \ + for dir in $${dirs}; do \ + if [ -d $${dir} ]; then \ + echo $${dir} && \ + if [ "imageformats" == $${dir} ]; then \ + echo $${dir} && \ + rm -rf $${dir} && \ + git clone --depth=1 https://github.com/tjhann/$${dir} && \ + cd $${dir} && \ + echo $$PWD && \ + echo "`git rev-parse HEAD | cut -c 1-8` - $${dir}" > ../shaHEADdep_$${dir} && \ + cd $${gwd} && \ + rm -rf $${dir}/.git; \ + elif [[ "d2sqlite3" == $${dir} || "D-YAML" == $${dir} || "tinyendian" == $${dir} ]]; then \ + echo $${dir} && \ + rm -rf $${dir} && \ + git clone --depth=1 https://github.com/dlang-community/$${dir} && \ + cd $${dir} && \ + echo "`git rev-parse HEAD | cut -c 1-8` - $${dir}" > ../shaHEADdep_$${dir} && \ + cd $${gwd} && \ + rm -rf $${dir}/.git; \ + fi; \ + fi; \ + done; \ + ewd="$${hwd}/src/build_depends" && \ + dirs=$$(echo `ls -gx $${ewd}`) && \ + cd $${ewd} && \ + for dir in $${dirs}; do \ + if [ -d $${dir} ]; then \ + echo $${dir} && \ + if [[ "dub2nix" == $${dir} ]]; then \ + echo $${dir} && \ + rm -rf $${dir} && \ + git clone --depth=1 https://github.com/lionello/$${dir} && \ + cd $${dir} && \ + echo "`git rev-parse HEAD | cut -c 1-8` - $${dir}" > ../shaHEADdep_$${dir} && \ + cd $${ewd} && \ + rm -rf $${dir}/.git; \ + fi; \ + fi; \ + done; \ + cd $${hwd} +set_depends: get_depends + cp -vi src/ext_depends/tinyendian/source/tinyendian.d src/ext_depends/D-YAML/source/dyaml/tinyendian.d && \ + echo "`cat src/ext_depends/shaHEADdep_tinyendian` - dyaml/tinyendian.d" >> src/ext_depends/shaHEADdep_D-YAML dub_upgrade: $(DUB) upgrade default: ldc diff --git a/nix/dub.selections.nix b/nix/dub.selections.nix index 28f9d2e..9316b60 100644 --- a/nix/dub.selections.nix +++ b/nix/dub.selections.nix @@ -1,50 +1,2 @@ # This file was generated by https://github.com/lionello/dub2nix v0.2.3 -[ { - fetch = { - type = "git"; - url = "https://github.com/dlang-community/d2sqlite3.git"; - rev = "v0.19.1"; - sha256 = "0rnsgla6xyr8r34knf7v6dwhacra96q1b5rhxcz9246inwhvrk5k"; - fetchSubmodules = false; - date = "2020-07-21T12:32:51+02:00"; - deepClone = false; - leaveDotGit = false; - path = "/nix/store/hsi8xvl15w6fwlqvs042m1z5i88yc72i-d2sqlite3"; - }; -} { - fetch = { - type = "git"; - url = "https://github.com/kiith-sa/tinyendian.git"; - rev = "v0.2.0"; - sha256 = "086gf5aga52wr5rj2paq54daj8lafn980x77b706vvvqaz2mlis8"; - fetchSubmodules = false; - date = "2018-06-10T11:04:28+02:00"; - deepClone = false; - leaveDotGit = false; - path = "/nix/store/9c7fsmi5am84j6dq2mp3va306x3ay291-tinyendian"; - }; -} { - fetch = { - type = "git"; - url = "https://github.com/kiith-sa/D-YAML.git"; - rev = "v0.8.3"; - sha256 = "13wy304xjbwkpgg7ilql1lkxkm83s87jm59ffnrg26slp7cx149q"; - fetchSubmodules = false; - date = "2020-09-19T23:46:57+02:00"; - deepClone = false; - leaveDotGit = false; - path = "/nix/store/3i8i56lkmw2xq3lxr5h66v909waq2mqg-D-YAML"; - }; -} { - fetch = { - type = "git"; - url = "https://github.com/lgvz/imageformats.git"; - rev = "v7.0.2"; - sha256 = "1mfbsmi4fs1xny4zqs6jyr04d5f4h03r9f6jadvkdqj5kd1k0ws7"; - fetchSubmodules = false; - date = "2019-10-10T07:54:45+03:00"; - deepClone = false; - leaveDotGit = false; - path = "/nix/store/wn554pn21nzmpvw2hs7hvv9v9y0sgarg-imageformats"; - }; -} ] +[ ] diff --git a/nix/pkglst/shell-pkgs.nix b/nix/pkglst/shell-pkgs.nix index 2b8f03e..00259da 100644 --- a/nix/pkglst/shell-pkgs.nix +++ b/nix/pkglst/shell-pkgs.nix @@ -1,8 +1,6 @@ { pkgs ? import <nixpkgs> {} }: let - dub2nix-src = fetchTarball { - url = "https://github.com/lionello/dub2nix/archive/master.tar.gz"; - }; + dub2nix-src = ./src/build_depends/dub2nix/.; dub2nix = (import dub2nix-src) { inherit pkgs; }; in with pkgs; [ diff --git a/org/spine_build_scaffold.org b/org/spine_build_scaffold.org index 08bf338..f476485 100644 --- a/org/spine_build_scaffold.org +++ b/org/spine_build_scaffold.org @@ -87,6 +87,7 @@ <<make_version_tag>> <<make_changelog>> <<make_project_zip_archive>> +<<make_get_project_dependencies_github>> <<make_dub_upgrade>> <<make_compile_0_compiler_default>> <<make_compile_1_compiler_all>> @@ -348,6 +349,66 @@ all: dmd ldc gdc all_ver: dmd_ver ldc_ver gdc_ver #+END_SRC +******** get project dependencies + +#+NAME: make_get_project_dependencies_github +#+BEGIN_SRC makefile +get_depends: + hwd=$$(echo `pwd`) && \ + gwd="$${hwd}/src/ext_depends" && \ + dirs=$$(echo `ls -gx $${gwd}`) && \ + echo $${hwd} && \ + echo $${gwd} && \ + echo $${dirs} && \ + cd $${gwd} && \ + for dir in $${dirs}; do \ + if [ -d $${dir} ]; then \ + echo $${dir} && \ + if [ "imageformats" == $${dir} ]; then \ + echo $${dir} && \ + rm -rf $${dir} && \ + git clone --depth=1 https://github.com/tjhann/$${dir} && \ + cd $${dir} && \ + echo $$PWD && \ + echo "`git rev-parse HEAD | cut -c 1-8` - $${dir}" > ../shaHEADdep_$${dir} && \ + cd $${gwd} && \ + rm -rf $${dir}/.git; \ + elif [[ "d2sqlite3" == $${dir} || "D-YAML" == $${dir} || "tinyendian" == $${dir} ]]; then \ + echo $${dir} && \ + rm -rf $${dir} && \ + git clone --depth=1 https://github.com/dlang-community/$${dir} && \ + cd $${dir} && \ + echo "`git rev-parse HEAD | cut -c 1-8` - $${dir}" > ../shaHEADdep_$${dir} && \ + cd $${gwd} && \ + rm -rf $${dir}/.git; \ + fi; \ + fi; \ + done; \ + ewd="$${hwd}/src/build_depends" && \ + dirs=$$(echo `ls -gx $${ewd}`) && \ + cd $${ewd} && \ + for dir in $${dirs}; do \ + if [ -d $${dir} ]; then \ + echo $${dir} && \ + if [[ "dub2nix" == $${dir} ]]; then \ + echo $${dir} && \ + rm -rf $${dir} && \ + git clone --depth=1 https://github.com/lionello/$${dir} && \ + cd $${dir} && \ + echo "`git rev-parse HEAD | cut -c 1-8` - $${dir}" > ../shaHEADdep_$${dir} && \ + cd $${ewd} && \ + rm -rf $${dir}/.git; \ + fi; \ + fi; \ + done; \ + cd $${hwd} +set_depends: get_depends + cp -vi src/ext_depends/tinyendian/source/tinyendian.d src/ext_depends/D-YAML/source/dyaml/tinyendian.d && \ + echo "`cat src/ext_depends/shaHEADdep_tinyendian` - dyaml/tinyendian.d" >> src/ext_depends/shaHEADdep_D-YAML +#+END_SRC + +gitDir=dub2nix; git clone --depth=1 https://github.com/lionello/${gitDir} | rm -rf ${gitDir}/.git + ******** debug :debug: #+NAME: make_compile_3_compiler_all_debug @@ -1059,6 +1120,12 @@ gitsnapshot: distclean tangle * dub.json :dub:config:json: ** dub.json +*** file-system download external dependencies + +- d2sqlite3 +- dyaml + - tinyendian +- imageformats #+BEGIN_SRC json :tangle ../dub.json { @@ -1090,6 +1157,227 @@ gitsnapshot: distclean tangle } }, "dependencies": { + "spine:d2sqlite3": "*", + "spine:imageformats": "*", + "spine:dyaml": "*" + }, + "subPackages": [ + { + "name": "d2sqlite3", + "description": "A thin wrapper around SQLite 3", + "homepage": "https://github.com/dlang-community/d2sqlite3", + "authors": [ "Nicolas Sicard", "Other contributors: see Github repo" ], + "copyright": "Copyright 2011-18 Nicolas Sicard", + "license": "BSL-1.0", + "sourcePaths": [ "./src/ext_depends/d2sqlite3/source" ], + "configurations": [ + { + "name": "with-lib", + "targetType": "library", + "systemDependencies": "SQLite version >= 3.8.7", + "libs": [ "sqlite3" ], + "excludedSourceFiles": [ "source/tests.d" ] + } + ] + }, + { + "name": "imageformats", + "description": "Decoders for PNG, TGA, BMP, JPEG and encoders for PNG, TGA, BMP.", + "authors": [ "Tero Hänninen" ], + "license": "BSL-1.0", + "sourcePaths": [ "./src/ext_depends/imageformats/imageformats" ] + }, + { + "name": "dyaml", + "description": "YAML parser and emitter", + "authors": [ + "Ferdinand Majerech", + "Cameron \"Herringway\" Ross" + ], + "license": "BSL-1.0", + "homepage": "https://github.com/dlang-community/D-YAML", + "copyright": "Copyright © 2011-2018, Ferdinand Majerech", + "sourcePaths": [ + "./src/ext_depends/D-YAML/source/dyaml", + "./src/ext_depends/D-YAML/source/tinyendian" + ], + "importPaths": [ + "./src/ext_depends/D-YAML/source/dyaml", + "./src/ext_depends/D-YAML/source/tinyendian" + ], + "preGenerateCommands": [ + "rm -rf ./src/ext_depends/D-YAML/examples", + "rm -rf ./src/ext_depends/D-YAML/testsuite" + ] + } + ], + "configurations": [ + { + "name": "default", + "targetName": "spine" + }, + { + "name": "ldc", + "targetName": "spine-ldc" + }, + { + "name": "dmd", + "targetName": "spine-dmd" + } + ], + "subConfigurations": { + "d2sqlite3": "with-lib" + } +} +#+END_SRC + +*** git (interim) + +#+BEGIN_SRC json +{ + "authors": [ + "Ralph Amissah" + ], + "copyright": "Copyright © 2015 - 2020 Ralph Amissah", + "name": "spine", + "version": "<<version_spine>>", + "description": "a sisu like document parser", + "homepage": "http://sisudoc.org", + "license": "AGPL-3.0+", + "targetPath": "./bin", + "sourcePaths": [ "./src/doc_reform" ], + "stringImportPaths": [ "./views" ], + "buildRequirements": [ "allowWarnings" ], + "targetType": "executable", + "platforms": [ "posix" ], + "buildTypes": { + "dmd": { + "dflags": [ "-J=views", "-I=src/doc_reform" ], + "buildOptions": [ "verbose", "inline" ], + "buildRequirements": [ "allowWarnings" ] + }, + "ldc": { + "dflags": [ "-O2", "-J=views", "-I=src/doc_reform" ], + "buildOptions": [ "verbose", "optimize", "inline" ], + "buildRequirements": [ "allowWarnings" ] + } + }, + "dependencies": { + "spine:d2sqlite3": "*", + "spine:imageformats": "*", + "spine:dyaml": "*" + }, + "subPackages": [ + { + "name": "d2sqlite3", + "description": "A thin wrapper around SQLite 3", + "homepage": "https://github.com/dlang-community/d2sqlite3", + "authors": [ "Nicolas Sicard", "Other contributors: see Github repo" ], + "copyright": "Copyright 2011-18 Nicolas Sicard", + "license": "BSL-1.0", + "sourcePaths": [ "./src/ext_depends/d2sqlite3/source" ], + "configurations": [ + { + "name": "with-lib", + "targetType": "library", + "systemDependencies": "SQLite version >= 3.8.7", + "libs": [ "sqlite3" ], + "excludedSourceFiles": [ "source/tests.d" ] + } + ] + }, + { + "name": "imageformats", + "description": "Decoders for PNG, TGA, BMP, JPEG and encoders for PNG, TGA, BMP.", + "authors": [ "Tero Hänninen" ], + "license": "BSL-1.0", + "sourcePaths": [ "./src/ext_depends/imageformats/imageformats" ] + }, + { + "name": "dyaml", + "description": "YAML parser and emitter", + "authors": [ + "Ferdinand Majerech", + "Cameron \"Herringway\" Ross" + ], + "license": "BSL-1.0", + "homepage": "https://github.com/dlang-community/D-YAML", + "copyright": "Copyright © 2011-2018, Ferdinand Majerech", + "sourcePaths": [ "./src/ext_depends/D-YAML/source/dyaml" ], + "importPaths": [ + "./src/ext_depends/D-YAML/source/dyaml", + "./src/ext_depends/tinyendian/source" + ], + "dependencies": { + "tinyendian" : "~>0.2.0" + }, + "preGenerateCommands": [ + "rm -rf ./src/ext_depends/D-YAML/examples", + "rm -rf ./src/ext_depends/D-YAML/testsuite" + ] + }, + { + "name": "tinyendian", + "description": "Lightweight endianness handling library", + "authors": [ "Ferdinand Majerech" ], + "license": "Boost 1.0", + "copyright": "Copyright © 2014, Ferdinand Majerech", + "homepage": "https://github.com/kiith-sa/tinyendian", + "importPaths": [ "./src/ext_depends/tinyendian/source" ] + } + ], + "configurations": [ + { + "name": "default", + "targetName": "spine" + }, + { + "name": "ldc", + "targetName": "spine-ldc" + }, + { + "name": "dmd", + "targetName": "spine-dmd" + } + ], + "subConfigurations": { + "d2sqlite3": "with-lib" + } +} +#+END_SRC + +*** git fetched remote external dependencies (used previously) + +#+BEGIN_SRC json +{ + "authors": [ + "Ralph Amissah" + ], + "copyright": "Copyright © 2015 - 2020 Ralph Amissah", + "name": "spine", + "version": "<<version_spine>>", + "description": "a sisu like document parser", + "homepage": "http://sisudoc.org", + "license": "AGPL-3.0+", + "targetPath": "./bin", + "sourcePaths": [ "./src/doc_reform" ], + "stringImportPaths": [ "./views" ], + "buildRequirements": [ "allowWarnings" ], + "targetType": "executable", + "platforms": [ "posix" ], + "buildTypes": { + "dmd": { + "dflags": [ "-J=views", "-I=src/doc_reform" ], + "buildOptions": [ "verbose", "inline" ], + "buildRequirements": [ "allowWarnings" ] + }, + "ldc": { + "dflags": [ "-O2", "-J=views", "-I=src/doc_reform" ], + "buildOptions": [ "verbose", "optimize", "inline" ], + "buildRequirements": [ "allowWarnings" ] + } + }, + "dependencies": { "d2sqlite3": "~><<version_d2sqlite3>>", "imageformats": "~><<version_imageformats>>", "dyaml": "~><<version_dyaml>>", @@ -1892,6 +2180,35 @@ nix flake update --recreate-lock-file inputs = { flake-utils.url = "github:numtide/flake-utils"; nixpkgs.url = "/nixpkgs-ra/nixpkgs/.gitworktree/ra/nixpkgs"; + dub2nix-src = { + url = "github:lionello/dub2nix"; + flake = false; + }; + }; + outputs = { self, dub2nix-src, nixpkgs, flake-utils }: + let + pkgs = nixpkgs.legacyPackages.x86_64-linux; + in { + packages.x86_64-linux.spine = pkgs.stdenv.mkDerivation { + name = "spine"; + inherit self; + src = self; + shell = ./shell.nix; + installPhase = '' + install -m755 spine $out/bin/spine + ''; + }; + defaultPackage.x86_64-linux = self.packages.x86_64-linux.spine; + }; +} +#+END_SRC + +#+BEGIN_SRC nix +{ + description = "a sisu like document parser"; + inputs = { + flake-utils.url = "github:numtide/flake-utils"; + nixpkgs.url = "/nixpkgs-ra/nixpkgs/.gitworktree/ra/nixpkgs"; d2sqlite3 = { url = "github:dlang-community/d2sqlite3"; flake = false; @@ -2435,7 +2752,7 @@ in { #+NAME: nix_dub2nix_with_pkgs #+BEGIN_SRC nix let - <<nix_shell_dub2nix>> + <<nix_shell_dub2nix_srcLocalPreFetched>> in with pkgs; [ <<nix_shell_with_pkgs_list>> @@ -2443,8 +2760,17 @@ with pkgs; [ #+END_SRC *** get dub2nix +**** source local + +#+NAME: nix_shell_dub2nix_srcLocalPreFetched +#+BEGIN_SRC nix +dub2nix-src = ./src/build_depends/dub2nix/.; +dub2nix = (import dub2nix-src) { inherit pkgs; }; +#+END_SRC + +**** source remote (github) -#+NAME: nix_shell_dub2nix +#+NAME: nix_shell_dub2nix_srcRemoteGitHub #+BEGIN_SRC nix dub2nix-src = fetchTarball { url = "https://github.com/lionello/dub2nix/archive/master.tar.gz"; diff --git a/project.nix b/project.nix index e5a3f60..5776186 100755 --- a/project.nix +++ b/project.nix @@ -9,9 +9,7 @@ mkDubDerivation rec { pkgs.sqlite ( let - dub2nix-src = fetchTarball { - url = "https://github.com/lionello/dub2nix/archive/master.tar.gz"; - }; + dub2nix-src = ./src/build_depends/dub2nix/.; dub2nix = (import dub2nix-src) { inherit pkgs; }; in with pkgs; [ @@ -118,9 +118,7 @@ mkDubDerivation rec { pkgs.sqlite ( let - dub2nix-src = fetchTarball { - url = "https://github.com/lionello/dub2nix/archive/master.tar.gz"; - }; + dub2nix-src = ./src/build_depends/dub2nix/.; dub2nix = (import dub2nix-src) { inherit pkgs; }; in with pkgs; [ |