Compare commits

..

12 commits

Author SHA1 Message Date
Jake Hamilton 0a63667459
refactor(format): apply formatting 2024-07-07 15:03:48 -07:00
Jake Hamilton d2b053d63a
feat: export linux-headers 2024-07-07 15:03:47 -07:00
Jake Hamilton 7774f65079
refactor: minor cleanup 2024-07-07 15:03:46 -07:00
Jake Hamilton fd9b85f29e
feat: apply platform to deps inside submodules 2024-07-07 15:03:45 -07:00
Jake Hamilton b315ae81f6
refactor: only support i686-linux for foundation gcc 2024-07-07 15:03:45 -07:00
Jake Hamilton 193a52cbc8
fix: cross-platform deps 2024-07-07 15:03:44 -07:00
Jake Hamilton 27a0e3d59f
fix: remove failing build args 2024-07-07 15:03:43 -07:00
Jake Hamilton 2b5f90d4e5
refactor: make dependencies dynamically built per-package 2024-07-07 15:03:42 -07:00
Jake Hamilton 008632bc8b
feat: working transient deps 2024-07-07 15:03:41 -07:00
Jake Hamilton 0f602b1cb7
wip: working single dependency reference via coercion 2024-07-07 15:03:38 -07:00
Alex Kladov 8233d4aedf use correct name for topological sort (#5)
I am 0.8 sure this is a typo, I've never seen this being referred to as topographic sorting!

Reviewed-on: #5
Reviewed-by: Jake Hamilton <jake.hamilton@hey.com>
Co-authored-by: Alex Kladov <aleksey.kladov@gmail.com>
Co-committed-by: Alex Kladov <aleksey.kladov@gmail.com>
2024-06-23 18:39:30 +00:00
Steve D a2f0a06426 Fix non-deterministic "missing: Permission denied" errors (#4)
Make 'missing' executable where source tarballs use autotools and are unpacked with untar.  untar doesn't preserve or set mtime, which may result in autotools generated files, e.g. configure, having newer timestamps than their source files (e.g. configure.in.) In these circumstances autotools generated Makefiles will call 'missing' to either regenerate them or fix-up the timestamps.

Reviewed-on: #4
Reviewed-by: isabel roses <isabel@isabelroses.com>
Reviewed-by: Jake Hamilton <jake.hamilton@hey.com>
Co-authored-by: Steve Dodd <steved424@gmail.com>
Co-committed-by: Steve Dodd <steved424@gmail.com>
2024-06-23 17:32:11 +00:00
6 changed files with 11 additions and 8 deletions

View file

@ -68,6 +68,7 @@ in
export CC="tcc -B ${stage1.tinycc.mes.libs.package}/lib" export CC="tcc -B ${stage1.tinycc.mes.libs.package}/lib"
export ac_cv_func_getpgrp_void=yes export ac_cv_func_getpgrp_void=yes
export ac_cv_func_tzset=yes export ac_cv_func_tzset=yes
chmod 0755 missing
bash ./configure \ bash ./configure \
--build=${platform.build} \ --build=${platform.build} \
--host=${platform.host} \ --host=${platform.host} \

View file

@ -58,6 +58,7 @@ in
# Configure # Configure
export CC="tcc -B ${stage1.tinycc.mes.libs.package}/lib" export CC="tcc -B ${stage1.tinycc.mes.libs.package}/lib"
chmod 0755 missing
bash ./configure \ bash ./configure \
--build=${platform.build} \ --build=${platform.build} \
--host=${platform.host} \ --host=${platform.host} \

View file

@ -59,6 +59,7 @@ in
export ac_cv_sizeof_unsigned_long=4 export ac_cv_sizeof_unsigned_long=4
export ac_cv_sizeof_long_long=8 export ac_cv_sizeof_long_long=8
export ac_cv_header_netdb_h=no export ac_cv_header_netdb_h=no
chmod 0755 missing
bash ./configure \ bash ./configure \
--prefix=$out \ --prefix=$out \
--build=${platform.build} \ --build=${platform.build} \

View file

@ -21,7 +21,7 @@ lib: {
## Apply a topological sort to a DAG. ## Apply a topological sort to a DAG.
## ##
## @type Dag a -> { result :: List a } | { cycle :: List a, loops :: List a } ## @type Dag a -> { result :: List a } | { cycle :: List a, loops :: List a }
topographic = topological =
graph: graph:
let let
getEntriesBefore = getEntriesBefore =
@ -43,7 +43,7 @@ lib: {
isBefore = a: b: builtins.elem a.name b.after; isBefore = a: b: builtins.elem a.name b.after;
sorted = lib.lists.sort.topographic isBefore entries; sorted = lib.lists.sort.topological isBefore entries;
in in
if sorted ? result then if sorted ? result then
{ {

View file

@ -119,11 +119,11 @@ in
}; };
"sort" = { "sort" = {
"topographic" = { "topological" = {
"handles an empty graph" = "handles an empty graph" =
let let
expected = [ ]; expected = [ ];
actual = lib.dag.sort.topographic { }; actual = lib.dag.sort.topological { };
in in
actual.result == expected; actual.result == expected;
@ -147,7 +147,7 @@ in
value = "d"; value = "d";
} }
]; ];
actual = lib.dag.sort.topographic { actual = lib.dag.sort.topological {
a = lib.dag.entry.anywhere "a"; a = lib.dag.entry.anywhere "a";
b = lib.dag.entry.between [ "c" ] [ "a" ] "b"; b = lib.dag.entry.between [ "c" ] [ "a" ] "b";
c = lib.dag.entry.before [ "c" ] "c"; c = lib.dag.entry.before [ "c" ] "c";

View file

@ -31,15 +31,15 @@ lib: {
in in
builtins.map (x: builtins.elemAt x 1) (builtins.sort isLess prepared); builtins.map (x: builtins.elemAt x 1) (builtins.sort isLess prepared);
## Perform a topographic sort on a list of items. The predicate function determines whether ## Perform a topological sort on a list of items. The predicate function determines whether
## its first argument comes before the second argument. ## its first argument comes before the second argument.
## ##
## @type (a -> a -> Bool) -> List a -> List a ## @type (a -> a -> Bool) -> List a -> List a
topographic = topological =
predicate: list: predicate: list:
let let
searched = lib.lists.search.depthFirst true predicate list; searched = lib.lists.search.depthFirst true predicate list;
results = lib.lists.sort.topographic predicate (searched.visited ++ searched.rest); results = lib.lists.sort.topological predicate (searched.visited ++ searched.rest);
in in
if builtins.length list < 2 then if builtins.length list < 2 then
{ result = list; } { result = list; }